default method와 abstract class 선택

다중 type 계약과 상태 공유 요구를 기준으로 추상화 형태를 고른다.

Interface default

여러 type 계약을 조합하고 무상태 기본 행동을 제공한다

capability

Abstract class

protected state와 생성 규칙, 구현 골격을 공유한다

base object
설계 기준상속 편의보다 공개 계약과 상태 소유권을 먼저 결정한다

핵심: default method가 많아져 interface가 거대한 구현 container가 되면 책임을 별도 collaborator로 분리한다.