두 도구는 모두 계약을 만들지만, 상태와 기본 구현을 어디에 둘지에 따라 선택이 달라집니다.
공통 상태, 기본 메서드, 보호된 헬퍼를 제공하면서 일부 동작만 자식에게 맡길 때 적합합니다.
구현 없이 형태와 역할만 강제하고, 여러 역할을 동시에 조합해야 할 때 적합합니다.
공유 필드가 필요한가
기본 로직을 제공할까
다중 구현이 필요한가
대체 구현이 쉬운가