반응형
SOLID 원칙 중 3번째인
1. LSP (=Liskov substitution principle, 리스코프 치환 원칙)
" 특정 메소드가 상위 타입을 인자로 사용한다고 할 때,
그 타입의 하위 타입도 문제 없이 정 상적으로 작동을 해야 한다."
- 다른 말로
"상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한 다."를 의미
public int calculate(final Item item) {
return item.calculate();
}
ㄴ> 상위 타입인 Item이 있고, 그 하위 타입이 Apple이라면,
LSP원칙 준수 시 위 인자로 item이 아닌 apple을 넘겨도 코드가 동작해야 합니다.
- LSP 원칙이 제대로 지켜지지 않으면 다형성에 기반한 OCP(개방 폐쇄 원칙) 역시 위반하는 것
따라서, 리스코프 치환 원칙을 지키는 것이 중요합니다.
- 'LSP 원칙은 기능의 명세와 확장에 대한 것'으로
상위 타입에서 정한 명세를 하위 타입에서도 그대로 지킬 수 있을 때 상속을 해야 합니다. (혹은, 상속을 하게 된다면 해당 메소드를 정의하지 않아야 합니다.)
[출처]
- SRP
-> https://steady-coding.tistory.com/383
- https://www.nextree.co.kr/p6960/
- 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴 - 최범균
반응형