디자인 모델 의 원형 모델, 구축 자 모델
소개 하 다.
원형 모델 은 창설 형 모델 이지 만 공장 모델 과 관계 가 없다. 이름 을 보면 알 수 있 듯 이 이 모델 의 사상 은 하나의 대상 을 원형 으로 삼 아 복제, 복제 하여 원래 의 대상 과 유사 한 새로운 대상 을 만 드 는 것 이다.
예시
public class Prototype implements Cloneable {
public Object clone() throws CloneNotSupportedException {
Prototype proto = (Prototype) super.clone();
return proto;
}
}
간단 합 니 다. 하나의 원형 류 는 Cloneable 인터페이스 만 실현 하고 clone 방법 을 복사 해 야 합 니 다. 여기 서 clone 방법 은 임의의 이름 으로 바 꿀 수 있 습 니 다. Cloneable 인 터 페 이 스 는 빈 인터페이스 이기 때문에 clonea 나 cloneB 와 같은 방법 명 을 임의로 정의 할 수 있 습 니 다. 여기 서 중점 은 슈퍼. clone () 이라는 말, 슈퍼. clone () 이 호출 하 는 Object 의 clone () 방법 이기 때 문 입 니 다.그리고 Object 류 에서 clone () 은 native 이 고 구체 적 으로 어떻게 실현 하 는 지 더 이상 깊이 연구 하지 않 습 니 다.
여기 서 저 는 대상 의 얕 은 복제 와 깊 은 복 제 를 결합 하여 먼저 대상 의 깊 고 얕 은 복제 개념 을 알 아야 합 니 다.
public class Prototype implements Cloneable, Serializable {
private static final long serialVersionUID = 1L;
private String string;
private SerializableObject obj;
//
public Object clone() throws CloneNotSupportedException {
Prototype proto = (Prototype) super.clone();
return proto;
}
//
public Object deepClone() throws IOException, ClassNotFoundException {
//
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(this);
//
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
return ois.readObject();
}
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
public SerializableObject getObj() {
return obj;
}
public void setObject(SerializableObject obj) {
this.obj = obj;
}
}
class SerializableObject implements Serializable {
private static final long serialVersionUID = 1L;
}
6. 빌 더 모드
소개 하 다.
건설 자 모델 의 정 의 는 복잡 한 대상 의 구 조 를 그의 표현 과 분리 시 켜 같은 구축 과정 에서 서로 다른 표현 을 만 들 수 있 도록 하 는 것 이다. 이런 디자인 모델 은 건설 자 모델 이 라 고 불 린 다.
건설 자 모델 의 역할 정 의 는 건설 자 모델 에 다음 과 같은 4 개의 역할 이 존재 한다.
구축 자 모델 과 공장 모델 은 매우 유사 하 다. 차이 점 은 구축 자 모델 은 개성 제품 의 구축 이 고 공장 모델 은 표준화 된 제품 의 구축 이다.
//
public class StudentBuilder {
//
private Student student = new Student();
public StudentBuilder id(int id) {
student.setId(id);
return this;
}
public StudentBuilder name(String name) {
student.setName(name);
return this;
}
public StudentBuilder age(int age) {
student.setAge(age);
return age;
}
public StudentBuilder father(String fatherName) {
Father father = new Father();
father.setName(fatherName);
student.setFather(father);
return this;
}
//
public Student build() {
return student;
}
}
// /
public class BuildDemo {
public static void main(String[] args) {
StudentBuilder builder = new StudentBuilder();
// Student
Student student = builder.age(1).name("zhangsan").father("zhaosi").build();
System.out.println(student);
}
}
이야기 링 내일 닭 다리 추가 가능!좋아 하 다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.