ISP(Interface Segregation 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
class ElectricCar(Car):
def __init__(self, brand, model, year, battery):
super().__init__(brand, model, year)
self.battery_size = battery
def get_battery_size(self):
return self.battery_size
class GasCar(Car):
def __init__(self, brand, model, year, lpg):
super().__init__(brand, model, year)
self.lpg = lpg
def get_lpg_size(self):
return len(self.lpg)
class CarLogger:
def log(self, car: Car):
print(f"Car: {car.get_brand()} {car.get_model()} ({car.get_year()}) logged")
- ElectricCar 클래스와 GasCar 클래스는 각각의 자신만의 기능을 가지고 있으며,
Car 클래스에서 필요한 메소드만을 상속받아 구현되어 있습니다.
- 따라서 ISP를 잘 지키고 있음