2016년 2월 18일 목요일

디자인패턴...재사용방법 편)

재사용방법

1. 클래스 상속
 - 화이트박스 재사용이라고도 불리운다.
 - 장점
   ① 컴파일 시점에 정적으로 정의되고 프로그래밍 언어가 직접 지원하므로 그대로 사용
   ② 부모 클래스의 속성 및 함수를 재사용, 자식 클래스에서 재정의로 수정이 쉽다.

 - 단점
   ① 런타임 시점에 상속받은 부모 클래스의 구현을 변경할 수 없다.
   ② 부모 클래스에 종속되므로, 부모 클래스 구현에 변경이 생기면 자식 클래스도 변경해야 한다.
   ③ 상속 시 부모 클래스의 내부가 보이므로 캡슐화에 위반된다는 의견도 있다.

 - 해결책
   ① 추상 클래스를 상속받는다. 구현이 아닌 인터페이스를 상속받는 것이므로 유연하다.

2. 객체 합성
 - 블랙박스 재사용이라고도 불리운다.
 - 한 객체가 다른 객체에 대한 참조자를 얻는 방식으로 런타임에 동적으로 정의됨
 - 인터페이스 정의에 주의
 - 객체는 인터페이스에서만 접근하므로 캡슐화 유지, 종속성 감소


결론
GoF에서는
 "객체 합성이 클래스 합성보다 더 나은 방법이다."
라고 표현하고 있으며, 상속과 객체 합성이 적절히 조합되어야 완벽한 재사용이 된다고 한다.




참조문헌
- GoF의 디자인패턴

댓글 없음:

댓글 쓰기