초보 엔지니어 총결산 디자인 모델 총결산6

종지


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

adapter 모드 개요


객체 구성의 설계 모델입니다.
기존 클래스의 인터페이스에서 포장기를 실현하여 다른 클래스와 호환되도록 한다.
주요한 실현 방법으로서 상속을 이용하는 방법과 양도를 이용하는 방법이 있다.
Adapter 모드의 목적은 기존 객체의 인터페이스를 변환하는 것입니다.

클래스 및 시퀀스



wikipedia 참조

실시 방침


상속 사용 시

  • 이용하고 싶은 클래스(Adaptee)를 계승한 Adapter 클래스를 제작합니다
  • Adapter 클래스는client를 위한 IF를 설치하고 방법 내에서 초클래스의 IF를 이용하여 처리한다
  • 구현 예1
    
    class Adaptee:
       def specific_operation(some_args):
          hogehoge()
    
    class Adapter(Adaptee):
    
       @classmethod
       def create(cls: Adapter):
            return cls()
    
       def wrapper_operation(self):
           some_args = make_args()
           self.specfic_operation(some_args)
    
    # client側
    def main():
        adpt = Adapter.cerate()
        adpt.wrapper_operation()
    

    양도 사용 시


    구현 예2
    
    class Adaptee:
       def specific_operation(some_args):
          hogehoge()
    
    class Adapter:
       def __init__(self, adaptee_cls: Adaptee):
          self._adaptee = adaptee_csl
    
      @classmethod
       def create(cls):
          return cls(Adaptee())
    
       def wrapper_operation(self):
           some_args = make_args()
           self._adaptee.specfic_operation(some_args)
    
    # client側
    def main():
        adpt = Adapter.cerate()
        adpt.wrapper_operation()
    
    

    용도

  • 사용처
  • 기존 클래스 인터페이스와 필요한 인터페이스가 일치하지 않는 경우
  • 좋은 웹페이지 즐겨찾기