PDH 개발 공부

Dependency inversion , 의존관계 역전 본문

Design Pattern/SOLID

Dependency inversion , 의존관계 역전

IFBB 2021. 11. 9. 18:37

Traditional Pattern

class Cat:
  def speak(self):
    print("meow")

class Dog:
  def speak(self):
    print("bark")


#Zoo depdns on Cat and Dog
class Zoo:
  def __init__(self):
    self.dog = Dog()
    self.cat = Cat()

  def speakAll(self):
    self.cat.speak()
    self.dog.speak()


zoo = Zoo()
zoo.speakAll()
  • 동물원은 고양이와 개와 의존적인 형태다.

  • 만약에 양과 소가 추가 된다면 더 많은 의존적인 객체들이 생성이 되어진다

  • 즉 코드 관리가 힘들어짐.

Dependency Inversion Pattern

class Animal: #abstract module
  def speak(self): #interface method
    pass

class Cat(Animal):
  def speak(self):
    print("meow")

class Dog(Animal):
  def speak(self):
    print("bark")


#Zoo depends on Animal.   (Not Cat, Not Dog)
class Zoo:
  def __init__(self):
    self.animals = []

  def addAnimal(self,animal):
    self.animals.append(animal)

  def speakAll(self):
    for animal in self.animals:
      animal.speak()

zoo = Zoo()
zoo.addAnimal(Cat())
zoo.addAnimal(Dog())
zoo.speakAll()
  • 양과 소가 추가 되어진다 하더라도 동물원에서는 건들 필요가 없어진다.
Comments