반응형
프로토 타입 패턴
생성할 객체들의 타입이 프로토타입 인스턴스로부터 결정되며, 새 객체를 위해 자신을 복제한다.
상태 값이 다른 객체 생성을 위해 깊은 복사를 사용하는 객체 생성 방식
기존 객체를 복제함으로써 객체를 생성한다.
단점
- clone에 대한 override 요구
- 객체를 생성하는데 비용이 많이 들기 때문에 유사한 객체가 존재하는 경우 사용
프로토 타입 패턴이라고 하면 뭔가 대단한 원칙인 것 같지만 객체를 생성 후 복사한다는 뜻이다.
예를 들어, DB에 접근해서 가져와야 할 데이터가 이미 객체로 생성되어 있다면 clone하여 데이터를 전달하는 것이 비용이 더 절약되므로 프로토 타입 패턴을 사용한다.
= 으로 복사하면 되는거 아닌가? 하는 생각을 하고 있다면 깊은 복사 얕은 복사를 공부해보시길 바란다.
전체 코드
package creational;
import java.util.ArrayList;
import java.util.List;
public class Prototype {
public static void main(String[] args){
MoneyFactory moneyFactory = new MoneyFactory(new Coin(100));
List<Money> wallet = new ArrayList<>();
for( int i=0; i<10; i++ ){
wallet.add(moneyFactory.makeMoney());
}
}
}
class Money implements Cloneable{
int price;
public Object clone() {
try {
Money copy = (Money) super.clone();
return copy;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
}
class Coin extends Money{
Coin(int price){
this.price = price;
}
}
class MoneyFactory{
private Money money;
public MoneyFactory(Money money){
this.money = money;
}
public Money makeMoney(){
return (Money) money.clone();
}
}
참고
https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85_%ED%8C%A8%ED%84%B4
반응형
'Clean Code' 카테고리의 다른 글
[Design Pattern] 구조 패턴 - 데코레이터 패턴 (0) | 2022.03.03 |
---|---|
[Design Pattern] 생성 패턴 - 싱글톤 패턴 (0) | 2022.03.03 |
[Design Pattern] 생성 패턴 - 팩토리 메소드 패턴, 추상 팩토리 패턴 (0) | 2022.03.01 |
[Design Pattern] 생성 패턴 - 빌더 패턴 (0) | 2022.03.01 |
[Architecture] 아키텍처 개념 정리 (0) | 2022.02.23 |