더북(TheBook)

3.7.3 공통 인터페이스 추출

한 단계 더 나아가서, 타입스크립트나 자바, C# 같은 강력한 타입의 언어를 사용한다면 인터페이스로 의존성의 역할을 명확히 정의할 수 있다. 이를 통해 실제 객체와 가짜 객체 모두 컴파일러 수준에서 준수해야 하는 일종의 규칙을 만들 수 있다.

먼저 새로운 인터페이스를 정의하자(지금부터는 타입스크립트 코드를 사용한다).

// stub-time/03-ts-inject-interface/time-provider-interface.ts
export interface TimeProviderInterface {
    getDay(): number;
}

다음으로 TimeProviderInterface 인터페이스를 구현하는 RealTimeProvider 클래스를 생성한다.

// stub-time/03-ts-inject-interface/real-time-provider.ts
import * as moment from "moment";
import { TimeProviderInterface } from "./time-provider-interface";

export class RealTimeProvider implements TimeProviderInterface {
    getDay(): number {
        return moment().day();
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.