추상 클래스 계약

추상 클래스 설계 기준

순수 가상 함수는 객체를 직접 만들 수 없게 하는 대신, 파생 클래스가 반드시 제공해야 할 동작의 이름과 형태를 고정합니다.

= 0

필수 구현

순수 가상 함수는 파생 클래스가 구현하지 않으면 여전히 추상 클래스입니다.

no state

인터페이스 성격

멤버 변수를 줄이고 함수 계약만 두면 결합도가 낮아집니다.

DI

교체 가능한 의존성

함수는 ILogger 같은 추상 타입을 받아 구현 교체에 열려 있게 됩니다.

cleanup

가상 소멸자

추상 기반 클래스도 포인터로 삭제될 수 있다면 virtual destructor가 필요합니다.