개발 서적 기록/오브젝트_조영호

29일차 - 믹스인을 통해서 상속 대체하기

밍 끄적 2023. 9. 8. 22:57
728x90

2023.09.08 FRI

376p ~ 392p

 

28일차 내용 ⬇️

2023.09.07 - [개발 서적 기록/오브젝트_조영호] - 27, 28일차 - 합성을 통해 상속의 한계 해결하기

 

27, 28일차 - 합성을 통해 상속의 한계 해결하기

2023.09.07 THU 346p ~ 377p 26일차 내용 ⬇️ 2023.09.05 - [개발 서적 기록/오브젝트_조영호] - 26일차 - 중복 코드를 추상화에 의존하는 부모 클래스로 올리기 26일차 - 중복 코드를 추상화에 의존하는 부모

magenta-ming.tistory.com


클래스 상속보다는 객체를 합성하자

클래스 상속은 부모 클래스의 세부적인 구현에 의존해야한다. 그래서 결합도가 높아진다.

합성을 사용하면 코드를 재사용하면서도, 결합도를 낮게 유지할 수 있다. 퍼블릭 인터페이스를 이용하기 때문이다.

 

이러한 클래스 상속은 구현 상속이기 때문에 단점을 가지지만, 인터페이스 상속이라면 상황이 다르다.

믹스인 : 상속과 합성 함께 사용하기

상속을 사용해 다른 클래스를 간편하게 재사용하고 점진적으로 확장할 수 있다는 장점에 결합도를 낮추는 합성의 장점을 갖출수 있는 방법이다.

객체를 생성할 때, 코드 일부를 클래스 안에 섞어 넣어 재사용하는 방법이다.

 

믹스인 기법은 상속처럼 코드를 재사용할 수 있지만, 부모 클래스의 코드를 이어 받아 이용하거나 확장한 개념이 아니다. 

상속이 클래스 간의 관계를 고정시킨다면, 믹스인은 관계를 유연하게 재구성할 수 있다는 점에서도 차이가 있다.

믹스인을 통한 변경

믹스인은 특정한 클래스의 메서드를 재사용하고 기능을 확장하기 위해 사용할 수 있다.

상속 계층 안에서 확장한 클래스보다 더 하위에 위치한다. 그래서 추상 서브 클래스라고 부를 수 있다.

슈퍼클래스로부터 상속될 클래스를 명시하게 되기 때문에 믹스인을 통해 매우 다양한 클래스를 도출하면서도 서로 다른 서브 클래스를 이용해 인스턴스화할 수 있다.

이를 통해서 점진적인 확장을 만들 수 있다.

728x90