인터페이스 선택 기준

인터페이스 사용 기준

문, 레버, 버튼처럼 서로 다른 액터가 같은 메시지에 반응해야 한다면 공통 부모로 묶기보다 BPI 계약을 구현하게 만듭니다.

Inheritance

A is a B

스포츠카는 자동차처럼 부모-자식 관계가 자연스러울 때 적합합니다. 공통 변수와 컴포넌트까지 함께 물려받습니다.

Interface

A can do B

문, 레버, 버튼이 모두 Interact를 할 수 있는 것처럼 기능 계약만 공유할 때 적합합니다.

대상이 다양하다

서로 다른 클래스들이 같은 입력이나 메시지에 반응해야 합니다.

호출자가 몰라도 된다

플레이어는 Target이 문인지 버튼인지 캐스팅하지 않고 메시지만 보냅니다.

새 대상을 자주 추가한다

기존 플레이어 로직을 고치지 않고 새 액터가 BPI만 구현하면 됩니다.