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
반응형
'컴퓨터 > Software Architecture' 카테고리의 다른 글
| [Clean Architecture] 컴포넌트 응집도: 3가지 원칙 (0) | 2023.02.26 |
|---|---|
| [Clean Architecture] SOLID 원칙, ISP(인터페이스 분리 원칙), DIP(의존성 역전 원칙) (0) | 2023.02.25 |
| [Clean Architecture] SOLID 원칙, OCP(Open-Closed 원칙) (0) | 2023.02.25 |
| [Clean Architecture] SOLID 원칙, SRP(단일 책임 원칙) (0) | 2023.02.25 |
| [Clean Architecture] SW Architecture와 프로그래밍 패러다임 (0) | 2023.02.05 |