트레이트 – 06.코드 재사용 메커니즘

코드 재사용 메커니즘(mechanism for code reuse)

PHP는 트레이트라는 코드 재사용 방법을 구현합니다. 트레이트는 PHP와 같은 단일 상속 언어(single inheritance language)에서 코드를 재사용하기 위한 메커니즘입니다. 트레이트는 단일 상속이 가지는 제한된 몇 가지 문제점을 개선하여, 개발자들에게 서로 다른 클래스 계층 구조를 가진 각각의 클래스들이 독자적으로 트레이트에 존재하는 메소드 셋을 자유롭게 재사용할 수 있도록 해줍니다. 트레이트와 클래스 조합이 가지는 의미는 복잡성을 줄이고 다중 상속(multiple inheritance) 및 믹스인(Mixin)과 관련된 일반적인 문제를 피하도록 한다는 것입니다.

트레이트는 더 나은 구성과 재사용을 지원함으로써 펄6(Perl 6), 스퀵(Squeak), 스칼라(Scala), 셀프(Self), 슬레이트(Slate), 포트리스(Fortress)와 같은 언어에서 그 가능성을 인정받고 있으며, Java 및 C#에도 포팅되었고, PHP도 트레이트의 기본 개념을 적용하여 5.4.0 버전부터 사용되고 있습니다.

트레이트는 클래스와 유사하지만, 기능을 세분화(fine-grained)하고 일관된 방식으로 그룹화하기 위한 것입니다. 트레이트 자신을 인스턴스화 하는 것은 불가능합니다. 이것은 기존의 상속이 아닌 행위(behavior)의 수평적 구성, 즉 상속하지 않고도 클래스 멤버(여기서는 트레이트 멤버를 의미함)를 사용할 수 있게 해줍니다.

앞 글 ‘수평적 재사용’에서의 예제에서 단일 상속에서의 재사용에 대한 한계를 보여주었습니다. 트레이트를 사용하면 개념적 일관성(conceptual consistency)을 손상시키지 않고 중복된 코드를 제거 할 수 있습니다. 이것은 트레이트가 무엇에 유용한 지를 보여주는 작은 예에 불과합니다.

답글 남기기