[최범균님 디자인 패턴] 객체지향과 디자인 패턴 : 상속보다 조립을
in 책과 강연 on 최범균님 디자인 패턴
상속은 상위 클래스에 구현된 기능을 그대로 손쉽게 재사용할 수 있지만 몇 가지 문제점이 있다.
재사용 관점에서 상속을 대체할 수 있는 객체 조립 방식이 잇다.
상속과 재사용
상속을 통한 재사용의 단점 1. 상위 클래스의 변경의 어려움
구현을 일부 변경했거나 일부 메서드의 시그니처를 변경했을 때
변경에 대한 여파가 계층도를 따라 하위 클래스에 전파된다
계층도가 커질 수록 상위 클래스를 변경하는 것은 점점 어려워진다
상속을 통한 재사용의 단점 2. 클래스의 불필요한 증가
다중 상속을 할 수 없는 자바에서는 한 개의 클래스만 상속받을 수 있다
필요한 기능의 조합이 증가할 수록 클래스의 개수는 기하급수적으로 증가하게 된다 (n개의 클래스에 대하여 2^(n-1))
상속을 통한 재사용의 단점 3. 상속의 오용
IS-A
관계가 아닐때 사용하면 의도한 방식과 맞지 않게 동작한다 !
예) List의
add
, Luggage의put
을 API를 사용하는 클라이언트는 알 수 없다
조립을 이용한 재사용
- 이해가 잘 안됀다… 다시 읽어보자 !
위임 (delegation)
- 위임 : 내가 할 일을 다른 객체에게 넘긴다
- 조립 방식을 이용해서 위임을 구현한다
- 조립: 더 구체적인 방법
- 위임: 논리적인 방법
- 조립 방식을 이용해서 위임을 구현한다
상속은 언제 사용하니?
재사용의 관점이 아닌 기능의 확장이라는 관점에서 상속을 적용해야 한다
명확한 IS-A
관계가 성립되어야 한다.
그외
정사각형-직사각형 문제
- 원-타원 문제