Python 디자인 패턴-어댑터
어댑터 패턴은 호환되지 않는 두 인터페이스 간의 브리지 역할을합니다. 이 유형의 디자인 패턴은 두 개의 독립적 인 인터페이스의 기능을 결합하기 때문에 구조적 패턴을 따릅니다.
이 패턴은 독립적이거나 호환되지 않는 인터페이스의 기능을 결합하는 단일 클래스를 포함합니다. 실제 사례로는 메모리 카드와 노트북 사이의 어댑터 역할을하는 카드 리더가 있습니다. 노트북을 통해 메모리 카드를 읽을 수 있도록 메모리 카드를 카드 리더기에 연결하고 카드 리더를 노트북에 연결합니다.
어댑터 디자인 패턴은 클래스를 함께 작업하는 데 도움이됩니다. 요구 사항에 따라 클래스의 인터페이스를 다른 인터페이스로 변환합니다. 이 패턴은 하나의 이름과 여러 형태를 명명하는 다형성 종을 포함합니다. 수집 된 요구 사항에 따라 사용할 수있는 모양 클래스를 말합니다.
어댑터 패턴에는 두 가지 유형이 있습니다.
개체 어댑터 패턴
이 디자인 패턴은 객체 구현에 의존합니다. 따라서이를 Object Adapter Pattern이라고합니다.
클래스 어댑터 패턴
이것은 어댑터 디자인 패턴을 구현하는 다른 방법입니다. 패턴은 다중 상속을 사용하여 구현할 수 있습니다.
어댑터 패턴을 구현하는 방법은 무엇입니까?
이제 어댑터 패턴을 구현하는 방법을 살펴 보겠습니다.
class EuropeanSocketInterface:
def voltage(self): pass
def live(self): pass
def neutral(self): pass
def earth(self): pass
# Adaptee
class Socket(EuropeanSocketInterface):
def voltage(self):
return 230
def live(self):
return 1
def neutral(self):
return -1
def earth(self):
return 0
# Target interface
class USASocketInterface:
def voltage(self): pass
def live(self): pass
def neutral(self): pass
# The Adapter
class Adapter(USASocketInterface):
__socket = None
def __init__(self, socket):
self.__socket = socket
def voltage(self):
return 110
def live(self):
return self.__socket.live()
def neutral(self):
return self.__socket.neutral()
# Client
class ElectricKettle:
__power = None
def __init__(self, power):
self.__power = power
def boil(self):
if self.__power.voltage() > 110:
print "Kettle on fire!"
else:
if self.__power.live() == 1 and \
self.__power.neutral() == -1:
print "Coffee time!"
else:
print "No power."
def main():
# Plug in
socket = Socket()
adapter = Adapter(socket)
kettle = ElectricKettle(adapter)
# Make coffee
kettle.boil()
return 0
if __name__ == "__main__":
main()
산출
위의 프로그램은 다음과 같은 출력을 생성합니다-
설명
코드에는 다양한 매개 변수 및 속성이있는 어댑터 인터페이스가 포함됩니다. 모든 속성을 구현하고 출력을 보이는 것으로 표시하는 Target 인터페이스와 함께 Adaptee를 포함합니다.