더북(TheBook)

3.7.2 함수 대신 객체 주입

예제 3-10에서 만든 PasswordVerifier 클래스는 두 번째 매개변수로 함수를 받고 있다.

// stub-time/02-inject-object/password-verifier-time01.js
constructor(rules, dayOfWeekFn) {
    this.rules = rules; 
    this.dayOfWeek = dayOfWeekFn;
}

이제 객체 지향 설계에서 한 단계 더 나아가, 매개변수로 함수 대신 객체를 사용해 보자. 이를 위해서는 약간의 코드 리팩터링 작업이 필요하다.

먼저 time-provider.js 파일을 생성하여 다음 코드를 붙여 넣도록 하자. RealTimeProvider 함수는 moment.js 모듈에 의존성을 가진 객체를 반환한다. 반환된 객체는 현재 moment.js 모듈을 이용하여 날짜를 반환하는 getDay() 함수를 가진다.

// stub-time/02-inject-object/time-provider.js
import moment from 'moment';

const RealTimeProvider = () => {
    this.getDay = () => moment().day();
};
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.