제어 역전
// Bad : MessageService가 내부에 MessagesRepository에 대한 의존성을 가짐.
export class MessagesService {
messagesRepo : MessagesRepository;
constructor () {
this.messagesRepo = new MessageRepository
}
}// Better : MessageService가 의존성 받도록 함.
export class MessagesService {
messagesRepo : MessagesRepository;
constructor ( repo : MessagesRepository) {
this.messagesRepo = repo
}
}// Best : MessageRepository에 종속되어 있지 않고, Repository 인터페이스에 충족하는 객체를 제공하면 충족되도록 하였음.
interface Respository {
findOne ( id : string );
findAll();
create(content : string);
}
export class MessagesService {
messagesRepo : Repository;
constructor ( repo : Repository) {
this.messagesRepo = repo
}
}의존성 주입(Dependency Injection)
리팩토링

Injectable 데코레이터
Provider vs Service
의존성 주입이 필요한 이유
Last updated