파이썬에서 디자인 패턴 "Adapter"를 배우십시오.
■ Adapter(어댑터 패턴)
Adapter 패턴(어댑터 패턴)은 GoF(Gang of Four; 4명의 갱들)에 의해 정의된 디자인 패턴의 하나이다. Adapter 패턴을 사용하면, 기존의 클래스에 대해서 수정을 가하지 않고, 인터페이스를 변경할 수 있다. Adapter 패턴을 실현하기 위한 수법으로서 "계승을 이용한 수법"과 "위양을 이용한 수법"이 존재한다.
 UML 클래스 diagram
 
 1. 상속을 이용한 Adapter
상속을 이용한 Adapter는, 이용하고 싶은 클래스의 서브 클래스를 작성해, 그 서브 클래스에 대해서 필요한 인터페이스를 구현하는 것으로 실현된다.
 
 2. 위양을 이용한 Adapter
위양을 이용한 Adapter는, 이용하고 싶은 클래스의 인스턴스를 생성해, 그 인스턴스를 다른 클래스로부터 이용하는 것으로 실현된다.
 
 (이상 위키피디아(Wikipedia)에서 인용)
 ■ "Adapter" 샘플 프로그램
실제로 Adapter 패턴을 활용한 샘플 프로그램을 움직여서 다음과 같은 동작의 모습을 확인하고 싶습니다.
실제로 Adapter 패턴을 활용한 샘플 프로그램을 움직여서 다음과 같은 동작의 모습을 확인하고 싶습니다.
$ python Main.py 
(Hello)
*Hello*
■ 샘플 프로그램에 대해 자세히 알아보기
Git 저장소에도 비슷한 코드가 있습니다.
 htps : // 기주 b. 이 m / 싹 / s dy_ 오 f_로 해 응 _ 파테 r
.
├── Main.py
└── adapter
    ├── __init__.py
    ├── banner.py
    ├── print.py
    └── print_banner.py
(1) Target(대상)의 역할
Target 역할은 인스턴스 동작과 관련된 인터페이스를 결정합니다.샘플 프로그램에서는,
Print 클래스가, 이 역할을 노력합니다.adapter/print.py
from abc import ABCMeta, abstractmethod
class Print(metaclass=ABCMeta):
    @abstractmethod
    def printWeak(self):
        pass
    @abstractmethod
    def printStrng(self):
        pass
(2) Client(의뢰자)의 역할
Target 역의 메소드를 사용해, 일을 하는 역입니다.샘플 프로그램에서는,
startMain 메소드가, 이 역할을 노력합니다.Main.py
from adapter.print_banner import PrintBanner
def startMain():
    p = PrintBanner("Hello")
    p.printWeak()
    p.printStrng()
if __name__ == '__main__':
    startMain()
(3) Adaptee(적합되는 측)의 역할
Adapter 역할 속에서 실제로 동작하는 메소드를, 여기에서 구현합니다.샘플 프로그램에서는,
Banner 클래스가, 이 역할을 노력합니다.adapter/banner.py
class Banner(object):
    def __init__(self, string):
        self.__string = string
    def showWithParen(self):
        print("({0})".format(self.__string))
    def showWithAster(self):
        print("*{0}*".format(self.__string))
(4) Adapter(적합하는 측)의 역할
Adapter 역은, Target 역의 인터페이스를 구현하고 있는 클래스입니다.샘플 프로그램에서는,
PrintBanner 클래스가, 이 역할을 노력합니다.Adapter 패턴을 실현하기 위한 기법으로서, 다음의 2개의 기법이 존재합니다.
□ 상속을 이용한 샘플 프로그램
adapter/print_banner.py
from adapter.banner import Banner
from adapter.print import Print
class PrintBanner(Banner, Print):
    def __init__(self, string):
        super(PrintBanner, self).__init__(string)
    def printWeak(self):
        self.showWithParen()
    def printStrng(self):
        self.showWithAster()
□ 위양을 이용한 샘플 프로그램
adapter/print_banner.py
from adapter.banner import Banner
from adapter.print import Print
class PrintBanner(Print):
    def __init__(self, string):
        self.__banner = Banner(string)
    def printWeak(self):
        self.__banner.showWithParen()
    def printStrng(self):
        self.__banner.showWithAster()
■ 참고 URL
Reference
이 문제에 관하여(파이썬에서 디자인 패턴 "Adapter"를 배우십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ttsubo/items/d999f8dc2446c2aa30fb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)