디자인 모델 의 건설 모델

6923 단어 디자인 모드
1. 앞 에 쓰 면
  사실 나 도 블 로 거들 이 쓴 디자인 모델 을 많이 봤 는데, 많 든 적 든 모두 잊 어 버 렸 다.
  오늘 은 마침내 내 가 쓴 것 이다. 그렇게 어렵 고 딱딱 하 게 내 가 표현 하고 싶 은 것 을 모두 표현 하지 않 았 으 면 좋 겠 다.
  이것 이 예 사 롭 지 않 은 시리즈 이 기 를 바 랍 니 다. 그것 이 당신 에 게 도움 이 되 기 를 바 랍 니 다. "
2. 한 이야기 부터 시작 하 자
  어느 날, 여 와 는 진흙 인형 을 빚 어서 지 쳤 다.그래서 그녀 는 하청 업 체 를 찾 았 다. 그녀 는 하청 업 체 에 게 말 했다. "너 는 나 를 도와 사람 을 잡 을 수 있 는 신선 을 몇 명 찾 아 줘. 그들 에 게 나 를 도와 달라 고 해."그 러 자 청부업자 가 승낙 하고 청부업자 가 여 와 에 게 물 었 다. "이 사람 에 게 무슨 약속 조건 이 있 느 냐?"그 러 자 여 와 는 그 에 게 대답 했다." 있 습 니 다. 제 조건 은 앞으로 모든 사람 이 자기 소 개 를 할 때 순서 가 자 유 롭 게 통제 되 어야 한 다 는 것 입 니 다. 제 가 그 에 게 자신의 이름 을 먼저 말 하 라 고 했 습 니 다. 제 가 그 에 게 자신의 성별 을 먼저 말 하 라 고 했 더 니 그 는 자신의 성별 을 먼저 말 해 야 했 습 니 다. "
  도 급 꾼 은 사람 을 만 드 는 신선 을 찾 았 지만 신선 들 은 한 가지 성별 만 만 만 드 는 사람 이 었 습 니 다. 그래서 도 급 꾼 은 남 자 를 만 드 는 신선 을 한 곳 에 모 았 고 여 자 를 만 드 는 신선 을 한 곳 에 모 았 습 니 다. 그들 에 게 말 했 습 니 다."각 노선 의 신선, 우리 의 이번 임 무 는 여 와 가 사람 을 빚 는 것 을 돕 는 것 이다. 지금 나 는 가장 기본 적 인 사람 을 빚 는 규칙 을 말 하 겠 다. 우리 가 빚 은 사람 은 모두 여 와 로 하여 금 그들 이 자기소개 하 는 순 서 를 규정 하 게 해 야 한다. 그리고 모두 가 빚 어야 할 사람 은 사람 이다. 이 규칙 은 모든 신선 에 게 효과 가 있 기 때문에 이 규칙 은 구체 적 으로 어떤 성의 사람 인지 말 할 수 없다."자, 내 가 다 설명 했다. 조금 있 으 면 여 와 가 물건 을 요구 할 것 이다. 모두 서둘러 일 하 자.
  이 야 기 를 끝 냈 습 니 다. 건축 모델 의 주요 유형 과 참여 자 들 도 모두 위 에 있 습 니 다. 제 가 굵 은 곳 과 빨간색 을 표시 하 는 말 을 기억 하 세 요. 다음은 코드 로 신선 들 에 게 집 어 줍 니 다!
3. 그럼 코드 로 사람 을 만들어 볼 까요?
  분석: 신선 들 이 남자 / 여 자 를 만 들 려 고 하 는 것 같 으 니 이 두 가지 부터 시작 하 자.
/**
 *   
 * @author liyichen
 *
 */
public class Man extends AbstractHuman{
	
	private String name; 
	
	private Integer sex; 

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getSex() {
		return sex;
	}

	public void setSex(Integer sex) {
		this.sex = sex;
	}

	@Override
	protected void sayName() {
		System.out.println("     :"+this.name);
	}
	
	@Override
	protected void saySex() {
		
		System.out.println("     :"+(this.sex <= 1 ? " " : " "));
	}
    
	public Man(String name, Integer sex) {
		super();
		this.name = name;
		this.sex = sex;
	}
	
}

 
/**
 *   
 * @author liyichen
 *
 */
public class Female extends AbstractHuman{
	
	private String name;
	
	private Integer sex;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getSex() {
		return sex;
	}

	public void setSex(Integer sex) {
		this.sex = sex;
	}

	@Override
	protected void sayName() {
		System.out.println("     :"+this.name);
	}
	
	@Override
	protected void saySex() {
		
		System.out.println("     :"+(this.sex <= 1 ? " " : " "));
	}

	public Female(String name, Integer sex) {
		super();
		this.name = name;
		this.sex = sex;
	}
	
}

어? AbstractHuman 은 무엇 일 까요? 여러분 은 이야기 속 여 와 의 요 구 를 기억 하 십 니까? 틀림 없습니다. 바로 이런 종류 입 니 다. 그것 은 추상 화 되 었 습 니 다.
/**
 *      
 * @author liyichen
 *
 */

public abstract class AbstractHuman {
	
	//              flag
	private Integer initSequence ;
	
	protected abstract void sayName();
	
	protected abstract void  saySex();
	
	public final void show() {
		if(this.initSequence <= 1) {
			//                  
			sayName();
			saySex();
		}else {
			//         
			saySex();
			sayName();
		}
	}
	
	public final void setInitSequence(Integer i) {
		this.initSequence = i;
	}
}

다음은 뭐 가 부족 할 까? 우 리 는 사람의 신선 을 만 들 것 이다. 아직 은 두 파 의 신선 을 만 들 것 이다.
/**
 *          
 * @author liyichen
 *
 */
public class ManBuilder extends AbstractBuilder{
	
	private Man man = new Man("  ",1);

	@Override
	public void setInitSqe(Integer i) {
		man.setInitSequence(i);
	}

	@Override
	public AbstractHuman getHuman() {
		return this.man;
	}
	
	
}

**
 *          
 * @author liyichen
 *
 */
public class FemaleBuilder extends AbstractBuilder{
	
	private Female female = new Female("  ",2);

	@Override
	public void setInitSqe(Integer i) {
		female.setInitSequence(i);
	}

	@Override
	public AbstractHuman getHuman() {
		return this.female;
	}
	
	
}

어? 여기 왜 또 하나의 Abstract Builder 가 있 지?
/**
 *        
 * @author liyichen
 *
 */
public abstract class AbstractBuilder {
	
	//          
	public abstract void setInitSqe(Integer i);
	
	//          
	public abstract AbstractHumanProduct getHuman();
}

모든 것 이 다 되 었 습 니 다. 우리 신선 들 은 이미 준 비 를 마 쳤 습 니 다. 도 급 업자 의 명령 만 기다 리 면 일 을 시작 할 수 있 습 니 다. 이제 도 급 업자 도 깜짝 등장 하 게 합 시다.
/**
 *    ,             
 *  :1.               (              )
 * 	   2.  (     )       (                         )
 * @author liyichen
 *
 */
public class Director {
	
	private ManBuilder manBui = new ManBuilder();
	
	private FemaleBuilder femaleBui = new FemaleBuilder();
	
	private Integer initSeq = -1; //     flag
	
	public Man getMan() {
		//       
		this.initSeq = 1;
		manBui.setInitSqe(this.initSeq);
		return (ManProduct) this.manBui.getProduct();
	}
	
	public Female getFemale() {
		//       
		this.initSeq = 2;
		femaleBui.setInitSqe(this.initSeq);
		return (FemaleProduct) this.femaleBui.getProduct();
	}
}

오직 여 와 가 와 서 사람 을 요구 하 기 를 기다 릴 뿐이다.
**
 * 
 *    ,         builder       
 * @author liyichen
 *
 */
public class ClientMain {
	
	public static void main(String[] args) {
		Director dir = new Director();
		
		Man man = dir.getMan();
		man.show();
		
		Female female = dir.getFemale();
		female.show();
		
		
	}
}

이로써 우리 의 구조 모델 은 이미 다 말 했 습 니 다. 여러분 은 각 유형 에 따라 방금 제 가 표시 한 관건 적 인 사람과 규정 을 반복 해서 볼 수 있 습 니 다. 어떻게 유형 과 대응 하 는 지 보 세 요.
총화
  사실 여 와 는 우리 입 에서 나 오 는 상류 층 의 전용자 이다. 그녀 가 진흙 인형 을 필요 로 할 때, 그녀 는 단지 도 급 공 두 를 찾 아서, 도 급 공 두 가 각 신선 (건설 자) 을 조직 하여 만 들 었 으 면 좋 겠 다. 만약 어느 날 또 새로운 성별 을 가 진 사람 이 늘 어 나 면, 대응 하 는 종류 와 신선 (건설 자) 만 늘 려 야 한다.좋 습 니 다. 청부업자 가 당연히 이 일 을 알 게 되 었 습 니 다. 왜냐하면 그 는 새로운 성별 을 빚 을 신선 을 다시 찾 아야 하기 때 문 입 니 다. 그러나 여 와 는 그녀 에 게 관심 이 없 었 습 니 다. 청부업자 가 나 에 게 진흙 인형 (Abstract Human) 을 빚 어 줄 수 있다 는 것 만 알 았 으 면 좋 겠 습 니 다.
  우 리 는 건축 모델 의 몇 가지 관건 적 인 인물 을 정리 해 보 자.
  제품 류 (바로 이야기 속 의 남자 / 여자, 보통 템 플 릿 방법 (바로 AbstractHuman) 을 실현 합 니 다.
  추상 적 인 건축 자 (일반적으로 하위 류 에서 실현 되 는 것 이 바로 도 급 업자 의 규정)
  구체 적 인 건설 자.
  감독 류
  그럼 언제 건설 모델 을 사용 합 니까? 사실은 매우 간단 합 니 다. 여러분 은 건설 모델 이 운행 결 과 를 제어 하 는 이런 조작 이 있 는 것 을 발견 하 셨 습 니까? 그래서:
1. 같은 방법, 서로 다른 집행 순서, 서로 다른 사건 결과 가 발생 할 때 사용 할 수 있다.
2. 여러 개의 부품 이나 부품 (이름 소개, 성별 소개) 을 한 대상 에 조립 할 수 있 으 나 운행 결과 가 다 르 기 때문에 사용 할 수 있 습 니 다.
3. 제품 류 가 매우 복잡 하거나 제품 류 에서 사용 하 는 순서 가 다 르 기 때문에 서로 다른 효능 이 생 겼 을 때 사용 할 수 있다.
또 하 나 는 건설 모델 과 공장 모델 의 가장 큰 차이 점 은 건설 모델 이 부품 류 와 조립 공정 (사실은 집행 순서) 을 더욱 중시 하고 공장 은 이 문제 에 관심 을 가지 지 않 는 다 는 것 이다. 같은 건설 모델 이지 만 관심 사 는 다르다!
마지막
본 논문 이 당신 에 게 도움 이 되 기 를 바 랍 니 다. 또한 학습 은 끝 이 없습니다. 정확 하지 않 은 부분 이 있 으 면 댓 글 이 바로 보 이 는 것 을 환영 합 니 다. 제때에 수정 해 주 셔 서 감사합니다.

좋은 웹페이지 즐겨찾기