컴퓨터/Software Architecture
[Clean Architecture] SOLID 원칙, LSP(리스코프 치환 원칙)
mikasaAck
2023. 2. 25. 01:35
728x90
intro
SOLID 원칙, 3번째 'L'(리스코프 치환 원칙)를 알아보자.
리스코프 치환 원칙
child class는 parent class를 대체할 수 있어야 한다.
이는 inheritance에 제한된 개념이 아니고, interface와 implement에도 적용되는 원칙이다.
즉, child class를 만들 때는 parent class의 기존 동작을 변경해서는 안 되고, 새 기능이나 동작만 추가해야 한다.
이를 위배하면 어떤 문제가 발생할까?
inheritance나 implement시에 오동작하는 위험이 있다.
대표적인 예로 정사각형/직사각형 문제가 있다.

아래 코드를 보자.
Rectangle r = objSquare
r.setW(5)
r.setH(2)
assert(r.area() == 10);
square에서는 rectangle의 method를 그 의미 그대로 사용할 수가 없다.
square는 W와 H를 다르게 정의하는 것이 불가능하기 때문이다.
그러므로, square는 rectangle을 대체할 수 없고, 이는 LSP 위반이다.
reference
클린 아키텍처(Clean Architecture) - 9장 LSP: 리스코프 치환 원칙 (tistory.com)
728x90
반응형