Interface Design

Logger 확장 지점

소비 코드는 Logger 메서드만 알고, 실제 기록 방식은 생성자에서 주입되는 구현체가 담당한다.

Logger 예시의 의존성 방향

OCP + DIP
  1. Logger
  2. Processor
  3. Console/File
  4. Cloud 추가
  5. Mock 테스트

DataProcessor

구현 클래스 이름 없이 log, warn, error만 호출한다.

Console/FileLogger

계약을 채우는 세부 사항이며 런타임 선택으로 갈아 끼울 수 있다.

DatabaseLogger

새 저장소가 필요해도 기존 소비자는 수정 대상이 아니다.

MockLogger

파일이나 콘솔 부작용 없이 호출 기록만 검증한다.

해석

인터페이스가 중간 계약이 되면 고수준 모듈은 추상화에 의존하고, 저수준 구현체는 그 추상화를 만족시키는 방향으로 붙는다.