PDH 개발 공부
Dependency inversion , 의존관계 역전 본문
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()
- 양과 소가 추가 되어진다 하더라도 동물원에서는 건들 필요가 없어진다.
'Design Pattern > SOLID' 카테고리의 다른 글
Interface segregation, 인터페이스 분리원칙 (0) | 2021.11.09 |
---|---|
Liskov Substitution principle, 리스코프 치환 법칙 (0) | 2021.11.09 |
open Closed principles, 개방 폐쇄 원칙 (0) | 2021.11.09 |
Single Responsibility, 단일 책임 원칙 (0) | 2021.11.09 |