Dev./객체지향

Liskov Substitution principle(리스코프 치환 원칙)

hotpotato0 2022. 3. 29. 21:11

치환성(영어: substitutability)은 객체 지향 프로그래밍 원칙이다. 컴퓨터 프로그램에서 자료형 {\displaystyle S}

가 자료형 {\displaystyle T} 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 {\displaystyle T}

의 객체를 자료형 {\displaystyle S}의 객체로 교체(치환)할 수 있어야 한다는 원칙이다. 

 

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

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

def speak(cat:Cat):
  cat.speak()


cat = Cat()
speak(cat)
# meow 

cat = BlackCat()
speak(cat)
# black meow

사전에 클래스 설계시 확장성을 고려해야한다.

 

기본적으로 SOLID 원칙은 무조건 이게 답이다가 아닌,

이를 통해 직관적이고 유지보수가 쉬운 코드작성이 가능해진다.