엔트리급 엔지니어 요약 디자인 모델 요약2

종지


초보 엔지니어 비망록의 현수막.
※ 출처가 누락된 경우
출처:
https://yamakatsusan.web.fc2.com/pythonpattern08.html
https://dackdive.hateblo.jp/entry/python-design-pattern/abstract-factory
https://www.oreilly.co.jp/books/9784873117393/

factory method 모드 개술


기본 클래스(Creator 클래스)에서 제품 인스턴스 생성을 위한 공장 방법(인스턴스 생성에 사용되는 방법)을 정의하지만, 이 생성 처리가 여러 가지 복잡한 절차가 된 경우, 이 단계는 하위 클래스 측면에서 정의됩니다(template method를 인스턴스 생성에 적용).
(create 방법을director로 다른 클래스에 규정하면builder 모드가 되나요?)

클래스 및 시퀀스



wikipedia 참조

실시 방침

  • Creator 클래스에서 공장 방법(create)을 실현합니다.공장 방법에 규정된 제작 절차만 진행한다
  • Creator 하위 클래스에서 제작 순서를 덮어씁니다
  • Client에서 Creator 하위 클래스를 호출하고create 처리를 호출합니다
  • 클라이언트는 호출할 크리에이터 클래스를 지정해야 합니다.Creator 하위 클래스를 결정하는 방법은 Creator 클래스에 있으면 편리합니다
  • 구현 예1
    # factory側
    class Creator:
     def create():
       return create_proc1()   
    
     @abstractmethod
     def create_proc1(self):
       pass
    
     @classmethod 
     def get_creator(cls, some_args):
         selected_class = get_class(some_args)  # クラスを指定するロジックを記載
    
         return selected_class()
    
    class Creator1(Creator):
     def create_proc1(self):
       # 実処理を記載
       return Product1A(self)
    
    # client側
    def main():
     creator =  Creator.get_creator(choose_some_keywords_for_selecting_cls)
     product_1  = creator.create()
    
    

    abstractfactory와factorymethod의 차이


    차이를 잘 몰라서 조사해 보았다
    Factory Method 모드와 Abstract Factory 모드의 두 가지 차이
    - 생성된 제품 인스턴스의 수량(부품의 수)이 다릅니다(Abstract Factory는 여러 개 생성을 고려하기 쉽습니다)
    -abstract Factory는 하위 클래스에서 실례를 생성하고, Factory Method는 기본 클래스에서 실례를 생성합니다.
    - Abstract Factory에서는 하나의 Factory로 모든 부품을 만드는 것 같고, Factory Method는 하나의 부품과 하나의 Factory로 대응하는 이미지
    - 개인적으로 제품 생성 실례가 있고 생성 처리가 복잡하면 공장 method를 사용하면 실현 횟수가 줄어들 수 있다고 생각해서 사용하고 싶습니다.그 외의 상황이라면 Abstract Factory의 가독성이 더 높다고 생각합니다.(코드를 추적할 때 매번 기본 클래스에 가서 Factory method를 봐야 하기 때문이다.)만약 실례의 생성 방법이 빈번하게 변경될 가능성이 있다면, 최악의create 방법의 덮어쓰기는 억지로 바꿀 수 있기 때문에, 가장 좋은 것은 Factory method...?

    이점 및 용도

  • 이점(Abstract Factory와 함께)
  • 실례 생성 논리는client 코드(인터페이스에 의존하지 않음)에 의존하지 않는다
  • 제작 방법, 제작 방법, 실제 제작을 다른 모듈에 설치할 수 있다
  • 사용처
  • 생성 방법이 거의 같은 상황에서 효과가 있다
  • 하나의 제품 실례를 생성하고 생성 처리가 복잡할 때
  • ·클래스는 반드시 생성해야 하는 대상의 클래스의 상황을 미리 알 수 없다.
    · 하위 클래스화를 통해 생성된 대상을 확정할 때.
    · 클래스가 몇 개의 하위 클래스 중 하나에게 책임을 넘길 때 어떤 하위 클래스에 대한 지식을 국부화하고자 한다.
    참조 소스:https://yamakatsusan.web.fc2.com/pythonpattern04.html

    좋은 웹페이지 즐겨찾기