자바 고전 23 가지 디자인 모델 의 창조 형 모델(2)
5018 단어 디자인 모드
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 참조
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.