하나의 오브젝트가 여러 가지 공통된 기능과, 각각의 유니크한 기능들을 포함하고 있는 다양한 타입으로 나뉠 때 유용하게 사용할 수 있는 기법
디폴트 오브젝트를 상속받는 콘크리트 오브젝트에서 필요한 모듈들을 선언하는 방식으로 구현하였다.
간략한 클래스 다이어그램은 다음과 같다.
모노비헤이비어를 상속받는 클래스이며, 오브젝트를 생성/삭제/관리하는 매니저 클래스는 베이스 클래스를 토대로 각 오브젝트들을 관리한다.
Awake
, Start
등의 라이프사이클 함수에 모듈 인터페이스 리스트의 라이프사이클 함수들을 호출하여 모든 모듈들이 모노비헤이비어 작업을 수행할 수 있도록 한다.베이스 클래스에서 수행하는 라이프사이클을 모듈들도 수행할 수 있게 인터페이스화 해놓는다.
각각의 모듈들이 라이프사이클에서 어떠한 행동을 할 건지 정의하는 콘크리트 클래스이다.
베이스 클래스를 상속받는 클래스이며, 콘크리트 모듈들을 선언하여 실질적으로 사용하는 클래스이다.