계약 우선 설계

인터페이스 기반 설계 흐름

인터페이스는 구현체를 고정하지 않고 필요한 능력만 요구하게 만들어 확장과 테스트를 쉽게 합니다.

계약 선언

필요한 기능만 명시

Logger처럼 사용자가 기대하는 메서드 형태를 먼저 정의합니다.

interface Logger
구현 교체

Console에서 File로 변경

같은 인터페이스를 구현한 클래스는 호출부 수정 없이 바꿀 수 있습니다.

new FileLogger()
다형성

공통 타입으로 처리

서로 다른 구현체를 하나의 인터페이스 배열이나 매개변수로 받을 수 있습니다.

Logger[]
테스트 대역

mock 주입이 쉬움

실제 파일이나 네트워크 대신 가짜 구현체를 넣어 단위 테스트를 단순화합니다.

FakeLogger
의존 방향 업무 로직이 세부 구현이 아니라 추상화에 기대고 있는지 확인합니다.
확장 방식 새 구현체 추가 때 기존 DataProcessor 코드가 바뀌지 않아야 합니다.
인터페이스 크기 사용하지 않는 메서드까지 강요하지 않도록 역할별로 작게 나눕니다.

인터페이스는 객체 모양을 설명하는 문법을 넘어 변경에 강한 설계 경계를 만드는 도구입니다.