LSP (Liskov Substitution Principle; 리스코브 치환 법칙)

프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

 

위키의 설명을 보고 이해하려다가 혼란에 빠졌었다.

 

쉽게 설명해서

부모 클래스로 형변환하여 사용해도 아무런 이상없이 사용하면 된다.

자식 클래스 부모 클래스의 만든 전제 내에서 확장하면된다.

 

 

 

 


위반 예시

 

동물은 먹는다. (O)

고양이는 물고기를 먹는다. (O)

고양이 동물이다. (O)

동물은 물고기를 먹는다. (O)

 

직사각형은 가로 세로가 같던 다르던 상관없다. (O)

정사각형은 가로 세로가 같아야 한다. (O)

정사각형 직사각형이다. (O)

직사각형은 가로 세로가 같아야 한다. (X)

 

자식이 부모를 모순되게 만들지 말라는 원칙이다.

 

다형성을 통해 다양한 자식 클래스들을 부모클래스로 통합해 처리하는 로직이 있을 때

자식 중에 로직의 기대를 벗어나게 오버라이딩했다면 문제가 발생할 수 있다.

 

 

 

 


FIN

 

사실 모순을 발생하는 예시가 적으며

발생하더라도 문제가 생기지 않을 확률이 높다.

 

그렇게 신경쓰고 있어야할 원칙은 아닌듯 싶다.

 

 

 

 

'SoftwareDesign' 카테고리의 다른 글

DIP  (0) 2020.03.01
ISP  (0) 2020.03.01
OCP  (0) 2020.03.01
SRP  (0) 2020.03.01
SOLID 개요  (0) 2020.03.01

+ Recent posts