Prototype Pattern
Prototypical instance를 사용하여 create할 object의 종류를 명시해주고, prototype 복사하여 새로운 object를 생성한다.
run-time에 생성할 어떤 object를 명시하여 생성할 것인가?
클래스를 어떻게 동적으로 instantiation할 것인가?
prototype으로써 역할을 하기 위해서 object는 스스로를 copy할 수 있는 Prototype interface를 구현해야한다.
Solution
Prototype interface clone메서드를 정의하고 Product1에서 사용한다. Product1에서 clone을 통해 새로운 객체를 반환하도록 한다.
public class Product1 implements Prototype, Product {
String name;
public Product1(String name) {
this.name = name;
}
public Product1(Product1 p) {
this.name = p.getName();
}
@Override
public Product clone() {
return new Product1(this);
}
@Override
public String getName() {
return name;
}
}
Advantage
• run-time에 동적으로 객체들을 제거하거나 추가하는 것이 가능하다.
• 동적으로 클래스들을 인스턴스화 하는 것이 가능하다.
- 동적으로 loaded된 인스턴스들은 자동적으로 생성되고, prototype들을 등록 할 수 있다.
• Factory Method의 대안책을 제공한다.
- Prototype은 어떤 class를 인스턴스화 할지 subclass들을 필요로 하지 않는다.
( Factory Method는 상속에 의존하기 때문에 subclass가 필요하다. )
- Prototype은 Factory Method가 작동하는 어디에서나 더 유동적으로 작용 할 수 있다.
Disadvantages
• clone operation의 구현이 복잡해질 수 있다. 특히, circular references가 있을 때 올바르게 작동하기 어려울 수 있다.
[전체 코드]
https://github.com/jKyounju/adapterPatterns/tree/master/src/PrototypePattern
'Theory > Design Pattern' 카테고리의 다른 글
Proxy Pattern (0) | 2022.04.24 |
---|---|
Bridge Pattern (0) | 2022.04.24 |
Factory Method Pattern (0) | 2022.04.10 |
Builder Pattern (0) | 2022.03.29 |
ABSTRACT FACTORY PATTERN (0) | 2022.03.27 |
댓글