
상속과 합성
상속과 합성은 코드 재사용이라는 동일한 목적을 가진다는 점을 제외하면 구현 방법부터 변경을 다루는 방식까지 모든 면에서 차이를 보인다. 상속은 is-a 관계라고 부르고, 합성관계는 has-a 관계라고 부른다.
재사용의 대상이 다른 상속과 합성
- 상속 : 부모 클래스 안에 구현된 코드 자체를 재사용 (화이트박스 재사용)
- 합성 : 포함되는 객체의 퍼블릭 인터페이스를 재사용 (블랙박스 재사용)
상속을 남용했을 때 직면할 수 있는 문제점
- 불필요한 인터페이스 상속 문제
- 메서드 오버라이딩의 오작용 문제
- 부모 클래스와 자식 클래스의 동시 수정 문제
몽키패치
- 현재 실행 중인 환경에만 영향을 미치도록 지역적으로 코드를 수정하거나 확장하는 것을 가리킨다.
- 자바에서는 바이트코드를 직접 변환하거나 AOP를 이용하여 몽키패치를 구현한다.
객체 합성이 클래스 상속보다 더 좋은 방법
- 합성은 객체의 인터페이스를 재사용한다.
- 합성이 상속봐 같은 문제를 초래하지 않는 이유는 클래스의 구체적인 구현이 아니라 객체의 추상적인 인터페이스에 의존하기 때문이다.
믹스인
- 객체를 생성할 때 코드 일부를 클래스. 안에 섞어 넣어 재사용하는 기법
- 합성처럼 유연하면서 상속처럼 쉽게 코드를 재사용할 수 있는 방법
- 추상 서브클래스 라고 부르기도 한다.
'IT자료실 > 기술서적' 카테고리의 다른 글
오브젝트 - 기술서적 스터디 13단원-서브클래싱과 서브타이핑 (0) | 2023.11.02 |
---|---|
오브젝트 - 기술서적 스터디 12단원-다형성 (0) | 2023.11.02 |
오브젝트 - 기술서적 스터디 10단원-상속과 코드의 재사용 (0) | 2023.08.24 |
오브젝트 - 기술서적 스터디 9단원-유연한 설계 (0) | 2023.08.24 |
오브젝트 - 기술서적 스터디 8단원-의존성 관리하기 (0) | 2023.08.08 |