어댑터 패턴

김대익·2022년 3월 31일
0

클래스 코드와 클라이언트 코드의 interface가 서로 다를 때

서로 호환되도록 번역시켜주는 패턴이다.



위와 같이 Animal을 상속받은 Cat, Dog클래스는 walk() 메서드를 가지고 있지만
fish는 Animal을 상속받지않아 walk() 메서드가 없다.

따라서 walk() 메서드를 사용하기 위해서는 어댑터가 필요하다

class Animal:     #interface class
  def walk(self):
    pass

class Cat(Animal):
  def walk(self):
    print("cat walking")

class Dog(Animal):
  def walk(self):
    print("dog walking")

def makeWalk(animal : Animal):
  animal.walk()
  
class Fish:  
  def swim(self):
    print("fish swimming")
 
class FishAdapter(Animal):
  def __init__(self,fish:Fish):
    self.fish = fish
  
  def walk(self):
    self.fish.swim()

Fish 클래스는 swim() 메서드만 가지고 있다.
walk() 메서드를 implementation하기 위해

Fish객체를 받고 FishAdapter내에 가지고 있는다.


이후 walk() 메서드는
가지고 있는 Fish객체의 swin() 메서드를 호출 시킨다.

0개의 댓글