GoF의 디자인 패턴에서는

 

> Inheritance통한 재사용을 white-box reuse

> Composition 통한 재사용을 black-box reuse

 

으로 정의 한다. Inheritance Composition의 장단점을 명확히 파악하고 적절한 곳에 사용하는 것이 중요하다.

 

  

White-box (Inheritance)

투명한 상자 안에 어떤 것이 들어 있는지 밖에서 볼수있다는 .

 

장점

ü  오버라이딩을 통해 슈퍼클래스의 구현을 손쉽게 재정의가 가능하다.

 

단점

ü  슈퍼클래스의 구현이 변경되면 그 하위 클래스 모두를 변경해야한다.

ü  상속시 슈퍼클래스가 하위클래스에  불필요하게 많은 부분이 노출되어 하위클래스가 
슈퍼클래스의 구현에 종속됨으로 써 캡슐화에 위배가 된다.

ü  컴파일 시점에 상속에 의한 객체의 형식이 이미 결정된다 (한개의 부모 클래스만 상속 받기 때문에)

ü  시스템이 진화 할수록 새로운기능이 추가되거나 오류 수정으로 인해 상속관계가 복잡해진다.

 

Black-box (Composition)

상속과 달리 내부가 비치지 않아 밖에서 박스 안을 없다는 .

 

장점

ü  객체합성은 객체가 다른객체의 참조를 얻는 방식으로 런타임 시에 동적으로 이뤄지기 때문에 해당 객체의 인터페이스만을 바라보게 됨으로써 캡슐화가 이루어질 있다.

단점

ü  객체간의 관계가 수평관계가되어 객체나 메소드명이 명확하지 않으면 코드의 가독성이 떨어지고 이해하기 어렵다.

ü  용도에 따라 클래스들을 패키지로 적절하게 분리하고 사용 용도가 명확하게 들어나도록 인터페이스를 설계해야

 

 

 출처 : 자바 I/O & NIO 네트워크 프로그래밍, 김성박.송지훈 공저

 

Posted by Steven J.S Min
,