[Object] 믹스인(Mixin)

업데이트:

믹스인은 객체를 생성할 때 코드 일부를 클래스 안에 섞어 넣어 재사용하는 기법을 가리키는 용어다. 합성이 실행 시점에 객체를 조합하는 재사용 방법이라면 믹스인은 컴파일 시점에 필요한 코드 조각을 조합하는 재사용 방법이다.

믹스인과 상속이 유사한 것처럼 보이지만 믹스인과 상속은 다르다. 상속은 클래스와 클래스 사이의 관계를 고정시키는 데 비해 믹스인은 유연하게 관계를 재구성 할 수 있다. 믹스인은 코드 재사용에 특화된 방법이면서 상속과 같은 결합도 문제를 초래하지 않는다. 믹스인은 합성처럼 유연하면서도 상속처럼 쉽게 코드를 재사용할 수 있는 방법이다.

믹스인을 구현하는 방법은 언어마다 다르다. 어떤 언어는 언어 차원에서 직접 지원하지만 또 다른 언어는 다른 용도로 고안된 요소를 이용하여 믹스인을 구현하기도 한다.

상속은 super 참조가 가리키는 대상은 컴파일 시점에 결정이 되지만 믹스인은 super 참조는 런타임 시점에 결정이 된다. 다시말해 상속은 부모 클래스와 자식 클래스 관계를 변경할 수 있는 방법은 없다.

선형화

믹스인은 믹스인을 구현하는 클래스 위에 놓는다. super class 의 옆이 아니라 위쪽을 쌓아올리기 때문에 여러 클래스를 믹스인을 하여도 모호성이 없다. 하지만 동일한 객체를 믹스인하여도 믹스인 순서에 따라 다른 결과가 나올수 있다.

class A extends B,C class A with C,B class A extends B,C
image image image

믹스인을 사용하면 특정한 클래스에 대한 변경 또는 확장을 독립적으로 구현한 후 필요한 시점에 차례대로 추가할 수 있다. 믹스인의 이러한 특징을 쌓을 수 있는 변경 이라고 부른다.

Reference

오브젝트, 코드로 이해하는 객체지향 설계

카테고리:

업데이트:

댓글남기기