PDH 개발 공부

Liskov Substitution principle, 리스코프 치환 법칙 본문

Design Pattern/SOLID

Liskov Substitution principle, 리스코프 치환 법칙

IFBB 2021. 11. 9. 17:49
  • 리스코프 치환 법칙 이란 타입을 치환 한다 하더라도 프로그램이 돌아 가도록 함

코드

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

----------------------------------------------------------
class Fish(Cat):
  def speak(self):
    raise Exception("Fish cannot speak")

cat = Fish()
speak(cat)

// 결과

---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-3-6a75a05f3205> in <module>()
      4 
      5 cat = Fish()
----> 6 speak(cat)

1 frames
<ipython-input-3-6a75a05f3205> in speak(self)
      1 class Fish(Cat):
      2   def speak(self):
----> 3     raise Exception("Fish cannot speak")
      4 
      5 cat = Fish()

Exception: Fish cannot speak

  • Fish를 Cat으로 사용 할려면 에러가 난다. 즉 애초에 클래스 설계를 잘 해야함.
Comments