자바 고전 23 가지 디자인 모델 의 창조 형 모델(2)

5018 단어 디자인 모드
본 고 는 5 가지 창조 형 모델 의 나머지 두 가 지 를 기록 했다.건축 자 모델(Builder),원형 모델(PROTOTOTTYPE)이다.
1.건설 자 모드(별명:생 성자 모드)
복잡 한 대상 의 구축 과 그 표 시 를 분리 시 켜 같은 구축 과정 에서 서로 다른 표 시 를 만 들 수 있 도록 한다.하나의 완전한 건설 자 모델 은 다음 과 같은 몇 가지 개념 을 포함한다.
1.제품 류 Product
public class Person {

    private String head;
    
    private String body;
    
    private String foot;

    public String getHead() {
        return head;
    }

    public void setHead(String head) {
        this.head = head;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getFoot() {
        return foot;
    }

    public void setFoot(String foot) {
        this.foot = foot;
    }
}

2.추상 적 인 건축 자 builder
public interface PersonBuilder {

    void buildHead();
    
    void buildBody();
    
    void buildFoot();

    Person buildPerson();
}

3.구체 적 인 건축 자 ConcreteBuilder
public class ManBuilder implements PersonBuilder {

    Person person;
    
    public ManBuilder() {
        person = new Man();
    }
    
    public void buildbody() {
        person.setBody("       ");
    }

    public void buildFoot() {
        person.setFoot("      ");
    }

    public void buildHead() {
        person.setHead("      ");
    }

    public Person buildPerson() {
        reture person;
    }
}


구체 적 인 제품 이 여러 개 있 으 면 구체 적 인 건설 자가 여러 개 있 고 이런 구체 적 인 건설 자 들 은 공 통 된 인 터 페 이 스 를 실현 한다.예 를 들 어 여 자 를 만 드 는 것 처럼 Woman Builder 를 정의 한다.
4.감독 류 Director 는 포장 역할 을 하고 고 층 모듈 이 건축 자 내부 에 깊이 들 어가 지 않도록 한다.건설 자가 복잡 하 다 면 여러 감독 류 가 필요 하 다.
public class PersonDirector {

    public Person constructPerson(PersonBuilder pb) {
        pb.buildHead();
        pb.buildBody();
        pb.buildFoot();
        return pb.buildPerson();
    }
}

테스트 코드:
public class Test{
    
    public static void main(String[] ar*s) {
        PersonDirector pd = new PersonDirector();
        Person person = pd.constructPerson(new ManBuilder());
        System*out.println(person.getBody());
        System.out.println(person.getFoot());
        System.out.println(person.getHead());
    }
}

사용 범위:
1.복잡 한 대상 을 만 드 는 알고리즘 이 이 대상 의 구성 부분 과 그들의 조립 방식 에 독립 되 어야 할 때.2.구조 과정 에서 구 조 된 대상 이 서로 다른 표 시 를 허용 해 야 할 때.
비고:건설 자 모델 은 대상 을 만 들 기 위해 통용 되 는 절 차 를 수행 해 야 한 다 는 것 을 분명히 말 했다.프로 세 스 를 실행 할 때 필요 에 따라 서로 다른 대상 을 만들어 구체 적 인 Builder 에 밀봉 합 니 다.최종 대상 을 얻 기 위해 서 는 감독 류 에 해당 하 는 구체 적 인 빌 더 를 입력 하면 된다.
참조 링크:http://www.cnblogs.com/muzongyan/archive/2010/08/27/1810307.html
2.원형 모델
새로운()없 이 대상 을 만 들 수 있 는 기 존 대상 을 복제 하기 위해 서다.복제 대상 은 얕 은 복사 와 깊 은 복사 로 나 뉜 다.얕 은 복사 대상 은 원래 대상 의 메모리 주소 와 마찬가지 로 주 소 를 복사 한 것 입 니 다.깊이 복사 한 대상 은 원래 대상 의 메모리 주소 와 다르다.필요 한 절 차 는 다음 과 같다.
1.자신 을 복제 하 는 인 터 페 이 스 를 설명 합 니 다. Cloneable 
public class Prototype implements Cloneable {

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

    public Object clone(){
        try {
            return super.clone();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

2.구체 적 인 원형
publ*c class ConcretePrototype extend* Prototype {

    public ConcretePrototype(String name) {
        setName(name);
    }
}

테스트 코드:
public clas* Test {

    public static void main(String[] args) {
        Prototype pro = new ConcretePrototy*e("prototype");
        Prototype pro2 = (Prototype)pro.clone();
        *ystem.out.println(pro.getName()*;
        System.out.println(pro2.getName());
    }
}

적용 성:
1.하나의 시스템 이 제품 의 창조*,구성 과 표현 에 독립 해 야 할 때.2.실례 화 할 클래스 가 실행 시간 에 지 정 될 때,예 를 들 어 동적 으로 불 러 옵 니 다.3.제품 류 차원 과 평행 하 는 공장*차원 을 만 들 때 를 피하 기 위해 서 입 니 다.4.하나의 인 스 턴 스 가 몇 개의 서로 다른 상태 조합 중 하나 만 있 을 때.    해당 수의 원형 을 만 들 고 복제 하 는 것 이 매번 적당 한 상태 로 수공 으로 예화 하 는 것 보다 더 편리 할 수 있 습 니 다.한 마디 로 하면 원본 모델 모델 은 하나의 원형 대상 을 제시 하여 만 들 대상 의 유형 을 가리 키 고 이 원형 대상 을 복사 하 는 방법 으로 같은 유형의 대상 을 더 많이 만 듭 니 다.원시 모델 모델 은 동태 적 으로 제품 류 를 증가 하거나 감소 할 수 있 고 제품 류 는 사전에 확 정 된 등급 구 조 를 필요 로 하지 않 으 며 원시 모델 모델 모델 은 그 어떠한 등급 구조 에 도 적용 된다.단점 은 모든 종류 에 복제 방법 을 갖 춰 야 한 다 는 것 이다.깊이 이해 링크 1 링크 2 참조

좋은 웹페이지 즐겨찾기