반응형
데코레이터 패턴(Decorator pattern)
-
Item 18. 상속보다는 컴포지션을 사용하라Book/Effective Java 3E 2022. 10. 22. 09:40
상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아닙니다. 이 책에서의 '상속'은 클래스가 다른 클래스를 확장하는 구현 상속을 말합니다. 메서드 호출과는 달리 상속은 캡슐화를 깨뜨립니다. 다르게 말하면, 상위 클래스가 어떻게 구현되느냐에 따라 하위 클래스의 동작에 이상이 생길 수 있습니다. 상위 클래스는 릴리스마다 내부 구현이 달라질 수 있으며, 그 여파로 코드 한 줄 건드리지 않은 하위 클래스가 오동작할 수 있다는 말입니다. 상위 클래스와 하위 클래스를 모두 같은 프로그래머가 통제하는 패키지 안에서라면 상속도 안전한 방법입니다. 확장할 목적으로 설계되었고 문서화도 잘 된 클래스(Item 19)도 마찬가지로 안전합니다. 하지만 일반적인 구체 클래스를 패키지 경계를 넘어, 즉 다른 패키지의 구체 ..