Skip to content

Latest commit

 

History

History
23 lines (17 loc) · 1.79 KB

README.md

File metadata and controls

23 lines (17 loc) · 1.79 KB

9장. LSP : 리스코프 치환 원칙

바바라 리스코프는 하위 타입을 아래와 같이 정의했다.

  • 여기에서 필요한 것은 다음과 같은 치환원칙이다. S타입의 객체 o1 각각에 대응하는 T 타입 객체 o2가 있고, T타입을 이용해서 정의한 모든 프로그램 P에서 o2의 자리에 o1을 치환하더라도 P의 행위가 변하지 않는다면, S는 T의 하위 타입이다.

리스코프 치환 원칙으로 알려진 이 개념을 이해하기 위해 몇 가지 예제를 살펴본다.

  • 상속을 사용하도록 가이드하기
  • LSP와 아키텍처
    • 객체 지향이 혁명처럼 등장한 초기에는 LSP는 상속을 사용하도록 가이드하는 방법 정도로 간주되었다.
    • 시간이 지나면서 LSP는 인터페이스와 구현체에도 적용되는 더 광범위한 소프트웨어 설계 원칙으로 변모해 왔다.
      • 자바스러운 언어라면 인터페이스 하나와 이를 구현하는 여러 개의 클래스로 구성된다.
  • LSP 위배 사례
    • 택시 파견 서비스 애플리케이션
      • 고객은 어느 택시업체인지는 신경쓰지 않고 자신의 상황에 가장 적합한 택시를 찾는다.
      • 이럴 경우 파견 서비스를 만들 때 다양한 택시업체에서 동일한 REST인터페이스를 반드시 준수하도록 만들어야 한다.
      • 서로 다른 택시업체가 필드들에 대하여 모두 동일한 방식으로 처리해야 한다.
    • 이를 위배 할 경우 꼬이게 되는 것…

결론

LSP는 아키텍처 수준까지 확장할 수 있고, 반드시 확장해야만 한다. 치환 가능성을 조금이라도 위배하면 시스템 아키텍처가 오염되어 상당량의 별도 메커니즘을 추가해야 할 수 있기 때문이다.