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();
};