재사용방법
1. 클래스 상속
- 화이트박스 재사용이라고도 불리운다.
- 장점
① 컴파일 시점에 정적으로 정의되고 프로그래밍 언어가 직접 지원하므로 그대로 사용
② 부모 클래스의 속성 및 함수를 재사용, 자식 클래스에서 재정의로 수정이 쉽다.
- 단점
① 런타임 시점에 상속받은 부모 클래스의 구현을 변경할 수 없다.
② 부모 클래스에 종속되므로, 부모 클래스 구현에 변경이 생기면 자식 클래스도 변경해야 한다.
③ 상속 시 부모 클래스의 내부가 보이므로 캡슐화에 위반된다는 의견도 있다.
- 해결책
① 추상 클래스를 상속받는다. 구현이 아닌 인터페이스를 상속받는 것이므로 유연하다.
2. 객체 합성
- 블랙박스 재사용이라고도 불리운다.
- 한 객체가 다른 객체에 대한 참조자를 얻는 방식으로 런타임에 동적으로 정의됨
- 인터페이스 정의에 주의
- 객체는 인터페이스에서만 접근하므로 캡슐화 유지, 종속성 감소
결론
GoF에서는
"객체 합성이 클래스 합성보다 더 나은 방법이다."
라고 표현하고 있으며, 상속과 객체 합성이 적절히 조합되어야 완벽한 재사용이 된다고 한다.
참조문헌
- GoF의 디자인패턴
댓글 없음:
댓글 쓰기