Prototype Pattern (Creational Pattern)
Prototype pattern 이란?
프로토타입 (시제품)
프로토타입 패턴은 어떤 객체 (인스턴스) 를 복제해서 (+수정) 다른 인스턴스를 만드는 방식이다 .
이때 복제 및 수정을 담당하는 메서드는 Clone() 메서드이다.
복제를 할 때는, 깊은 복사를 사용해야한다.
깊은 복사를 사용하지 않고 얕은 복사를 한다면 ?
레이블(네이밍) 만 변경되고 같은객체를 가리킬 뿐이다.
정석적인 인스턴스를 보유한 후
실제로 사용할 인스턴스는 복제를 통해 만들어내는것 이 프로토타입패턴의 의의 이다.
프로토타입 패턴의 구현
#deepcopy(clone) 지원 cat
import copy
class Cat: # prototype
def __init__(self):
self.color = None
self.eye_color = None
self.nose_color = None
self.tail_color = None
self.name = None
def clone(self): # clone method
return copy.deepcopy(self)
#abstract structure prototype
class BlackCat(Cat): # prototype
def __init__(self):
super().__init__()
self.color = 'black'
class WhiteCat(Cat): # prototype
def __init__(self):
super().__init__()
self.color = 'white'
black_cat = BlackCat() # prototype
black_cat.nose_color = 'pink' # 프로터타입에 있는 인스턴스를 수정
black_cat.tail_color = 'green'# 프로터타입에 있는 인스턴스를 수정
#black_cat is prototype
kitty = black_cat.clone()
kitty.eye_color = 'white'
kitty.name = 'kitty'
nabi = black_cat.clone()
nabi.eye_color = 'blue'
nabi.name = 'nabi'
728x90
반응형
'Dev > DesignPattern' 카테고리의 다른 글
[Design Pattern] Proxy Pattern (0) | 2023.04.26 |
---|---|
[DesignPattern] Adapter Pattern (0) | 2023.04.26 |
[DesignPattern] Singleton Pattern (0) | 2023.04.25 |
[DesignPattern] Builder Pattern (0) | 2023.04.25 |
[DesignPattern] Abstract Factory Pattern (0) | 2023.04.25 |