컴포지션

    [Effective Java] 상속보다는 컴포지션을 사용하라

    상속을 사용하면 위험한 이유 (구현 상속) 상위 클래스에서 제공하는 메서드 구현이 바뀐다면 하위 클래스의 로직에도 영향을 줄 수 있다. 상위 클래스에 기능이 추가된 경우 새로운 메서드를 하위 클래스에도 정의해 주어야 한다. 이러한 문제를 해결하기 위해 컴포지션을 사용할 수 있다. 컴포지션 전달 클래스 : 새로운 클래스를 만들고 기존 클래스의 인스턴스를 참조하는 클래스 public class ForwardingSet implements Set { private final Set s; public ForwardingSet(Set s) { this.s = s; } public void clear() { s.clear(); } public boolean contains(Object o) { return s.co..