[클린아키텍처] 9장. LSP: 리스코프 치환 원칙
9장. LSP: 리스코프 치환 원칙 p.80~86
오브젝트에서 명확하게 이해했었던 것 같음.
근데 시같이 지나니 역시 기억이 애매함.
프로그램 P에서 a의 타입인 객체의 타입을 b로 변경해도 정상동작하면 b는 a의 서브타입이다 였던가?
책에 나오는 정의
S 타입의 객체 o1 각각에 대응하는 T타입 객체 o2가 있고, T타입을 이용해서 정의한 모든 프로그램 P에서 o2의 자리에 o1을 치환하더라도 P의 행위가 변하지 않는다면, S는 T의 하위 타입이다.
=> 타입을 바꾸는게 아니라 객체를 바꾸는거였어???????????
LSP 위반 예시
정사각형 vs 직사각형
=> 유명한 예시. 굉장히 많이 봤는데, 잊고있었네..
궁금한 부분
LSP는 아키텍처 수준까지 확장할 수 있고, 반드시 확장해야만 한다.
아키텍처 수준의 LSP는 대체 뭘까?