Adaptor Pattern (Structural Pattern)
아답터 패턴은 Wrapper 패턴이라고도 불린다.
Wrapper 패턴은 감싸는 것이라는 의미인데
다른 인터페이스를 감싸서 사용하는 것이다.
어댑터 패턴은 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있게 해준다.
아댑터 패턴 2가지 종류
- 클래스에 의한 어댑터
- 상속을 통해 어댑터를 구현
- 객체에 의한 어댑터
- 위임을 통해 어댑터를 구현
Adaptor Pattern의 예시 (클래스에 의한 어댑터)
class Animal:
def walk(self):
print("walk")
class Cat(Animal):
def Walk(self):
print("cat walk")
class Dog(Animal):
def Walk(self):
print("dog walk")
##############################
class Fish:
def swim(self):
print("swim")
def makeWalk(animal : Animal):
animal.walk()
prettyCat = Cat()
makeWalk(prettyCat)
niceDog = Dog()
makeWalk(niceDog)
# smallFish = Fish()
# makeWalk(smallFish) # error
# 이런 문제를 해결하기위해서 아답터 패턴을 사용한다.
class FishAdaptor(Animal):
# 생성자를 통해서 Fish 객체를 받는다.
def __init__(self, fish: Fish):
# Fish 객체를 Adaptor 클래스에서 보유함
self.fish = fish
def walk(self):
self.fish.swim()
smallFish = Fish()
walkAbleSmallFish = FishAdaptor(smallFish)
walkAbleSmallFish.walk()
728x90
반응형
'Dev > DesignPattern' 카테고리의 다른 글
[Design Pattern]Facade Pattern (0) | 2023.04.26 |
---|---|
[Design Pattern] Proxy Pattern (0) | 2023.04.26 |
[DesignPattern] Prototype Pattern (0) | 2023.04.25 |
[DesignPattern] Singleton Pattern (0) | 2023.04.25 |
[DesignPattern] Builder Pattern (0) | 2023.04.25 |