401
자바에서 클래스는 원하는 개수만큼 인터페이스를 구현할 수 있다. 이런 모델은 클래스가 여러
추상을 구현해야 하는 경우에 매우 유용하다. 불행히도 이 접근 방법에는 한 가지 단점이 있다.
많은 인터페이스에서 그 기능의 대부분은 해당 인터페이스를 사용하는 모든 클래스에서 공통적
인 준비 코드가 없이는 구현할 수 없다.
인터페이스에는 구현 클래스의 나머지 부분과는 관계가 없는(직교하는) 멤버가 들어 있는 경
우가 자주 있다. 믹스인
mixin
1
은 그런 식으로 모아둔 재사용 가능한 상태와 동작을 의미하는 용
어다. 이상적인 경우, 이런 동작을 그 동작을 사용하는 구체적인 타입과 독립적으로 유지할 수
있다.
버전
8
이전의 자바에서는 그런 식으로 재사용 가능한 코드를 정의하고 사용할 수 있는 방법이
없었다. 대신 자바 프로그래머들은 주어진 인터페이스에 대한 구현을 재사용하기 위해 그때그때
만들어낸 관례를 사용해야 했다. 최악의 경우, 개발자가 동일한 코드를 복사해서 그 기능을 필요
로 하는 모든 클래스에 붙여 넣기도 한다. 그보다 너 낫지만 완전하지 않은 해법은, 동작에 대한
별도의 클래스를 구현해서 원래 클래스 안에 그런 동작 지원 클래스의 인스턴스를 유지하면서,
메서드 호출을 지원 클래스의 인스턴스에 위임하는 방식이다. 이런 접근 방식은 잘 작동하기는
하지만, 불필요한 부가 비용이 많이 들고, 오류가 발생하기 쉬운 준비 코드를 만들어야 한다.
1
역주_
mixin
은명사인경우에는발음을따서‘믹스인’으로,동사인경우에는가능하면‘혼합하다’라는의미로번역할것이다.
트레이트
CHAPTER
9
Get 프로그래밍 스칼라: 실용적인 스칼라 활용법을 익히는 가장 확실한 실전 바이블 (2.11.x 버전 기반) now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.