DIP(Dependency Inversion Principle)
- 고수준 모듈은 저수준 모듈에 의존하면 안된다
- 세부 사항은 추상화에 의존을 해야 한다 와 동일함
class Car:
def __init__(self, brand, model, year):
self.brand = brand
self.model = model
self.year = year
def get_brand(self):
return self.brand
def get_model(self):
return self.model
def get_year(self):
return self.year
def fix(self):
pass
class ElectricCar(Car):
def __init__(self, brand, model, year, battery):
super().__init__(brand, model, year)
self.battery = battery
def get_battery(self):
return len(self.battery)
class GasCar(Car):
def __init__(self, brand, model, year, lpg):
super().__init__(brand, model, year)
self.lpg = lpg
def get_lpg(self):
return len(self.lpg)
class CarLogger:
def log(self, car):
print(f"Car: {car.get_brand()} {car.get_model()} ({car.get_year()}) logged")
- 위 코드의 Car는 자식이나 다른 클래스에 의존하지 않고 있음
- 자식들이 부모에 의존함 → Car는 추상 클래스로 볼수도 있음 → 저수준이 고수준 모듈에 의존함