초보python 엔지니어 총괄 디자인 모델 총괄 4(prototype)
종지
초보 엔지니어 비망록의 현수막.
※ 출처가 누락된 경우
출처:
https://yamakatsusan.web.fc2.com/
https://dackdive.hateblo.jp/
https://www.oreilly.co.jp/books/9784873117393/
제품 모델 개요
생성된 디자인 모델 중의 하나.
"생성할 대상의 종류를 원형으로 하는 실례를 만들고 이 실례를 복사하여 대상 대상을 생성한다"
실례의 생성에 비용(시간적 또는 자원적)이 드는 경우, 또는 클래스로 규정할 필요가 없거나(또는 모든 종류를 클래스로 설치하는 것은 비현실적), 여러 실례에 대해 개별적인 속성 값을 부여하고 서로 다른 동작을 설치하는 방법을 사용하는 경우.
사용 빈도가 높지 않은 것 같아요.
클래스 및 시퀀스
wikipedia 참조
실시 방침
생성된 디자인 모델 중의 하나.
"생성할 대상의 종류를 원형으로 하는 실례를 만들고 이 실례를 복사하여 대상 대상을 생성한다"
실례의 생성에 비용(시간적 또는 자원적)이 드는 경우, 또는 클래스로 규정할 필요가 없거나(또는 모든 종류를 클래스로 설치하는 것은 비현실적), 여러 실례에 대해 개별적인 속성 값을 부여하고 서로 다른 동작을 설치하는 방법을 사용하는 경우.
사용 빈도가 높지 않은 것 같아요.
클래스 및 시퀀스
wikipedia 참조
실시 방침
# prototype側
class Prototype:
@abstractmethod
def use(self):
pass
@abstractmethod
def create(self)
pass
class ConcretePrototype1(Prototype):
def use(self):
do_something1()
def create(self)
clone = copy.deepcopy(self) # deep copyとshallow copyに注意
clone.set_parameter1(some_args)
return clone
class ConcretePrototype2(Prototype):
def use(self):
do_something2()
def create(self, some_args)
clone = copy.deepcopy(self)
clone.set_parameter2(some_args)
return clone
# Manager側(例)
class CreatingPrototypeManager:
def __init__(self):
self.__ins_dict = {}
def register_ins(self, prot_ins_key: str, prot_ins: Prototype):
self.__ins_dict[prot_ins_key]
def create_ins(self, prot_ins_keye, some_args: obj)
ins = self.__ins_dict[prot_ins_key]
ins.set_params(some_args)
return ins
# client側
def main():
prot1 = ConcretePrototype1()
prot2 = ConcretePrototype2()
prot_mgr = CreatingPrototypeManager()
prot_mgr.register_ins("prot1", prot1)
prot_mgr.register_ins("prot2", prot2)
# register_insまでの処理はManagerに持たせても良い)
ins1 = prot_mgr.create_ins("prot1", params1)
ins1 = prot_mgr.create_ins("prot1", params2)
ins1 = prot_mgr.create_ins("prot1", params3)
ins2 = prot_mgr.create_ins("prot1", params4)
용도
Reference
이 문제에 관하여(초보python 엔지니어 총괄 디자인 모델 총괄 4(prototype)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/speedingrenchon/items/24bf46162dec110fa543텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)