상속의 단점
상속의 단점은 다음과 같다.
- 캡슐화가 깨지고 결합도가 높아진다.
- 상위 클래스와 하위 클래스의 관계가 컴파일 시점에 결정되어 구현에 의존한다.
- 하위 클래스는 상위 클래스의 구조를 알고 있어야 사용이 가능하다. super를 사용하면 상위클래스의 구현이 노출되고, 강하게 결합된다.
- 유연성 및 확장성이 떨어진다.
- 상위 클래스에 변경점이 생기면 하위 클래스도 변경이 될 수 있다.
- 다중상속에 의한 문제가 발생할 수 있다.
- 자바는 다중 상속이 불가하다.
- 클래스 폭팔 문제가 발생할 수도 있다.
- 클래스를 몇단으로 상속해서 해결하거나, 조합의 수만큼 새로운 클래스를 만들어야 된다.
합성으로 해결
합성을 이용하면 의존하는 객체를 교체하는 것이 쉬워져서 설계가 유연해진다.
상속은 클래스를 통해 강하게 결합되지만, 합성은 메시지를 통해 느슨하게 결합된다.
즉, 필드나 클래스의 인스턴스를 참조하게 만들고, 유연하게 주입한다.
또한 클래스 뿐 아니라, 추상 클래스, 인터페이스도 가능하다.
데코레이터 패턴
상속의 문제를 해결하는 패턴이다. 즉 합성을 사용한다.
데코레이터는 동일한 인터페이스를 구현하고 있는 객체를 감싸서 새로운 동작을 추가한다.
새로운 기능을 추가할 때 기존 코드를 수정하지 않고, 데코레이터 패턴을 추가하면, 개방-폐쇄 원칙이 준수된다.
즉, 클래스 간의 결합도를 낮추고, 상속의 문제점을 피할 수 있다.
'Back-end' 카테고리의 다른 글
Spring DI 방식 (0) | 2023.09.08 |
---|---|
JDK 동적 프록시, CGLIB (0) | 2023.09.08 |
스레드를 무한정 만든다면? (0) | 2023.08.31 |
PSA(Portable Service Abstraction) (0) | 2023.08.30 |
IoC/DI (0) | 2023.08.30 |