A → B
) A 가 B에 의존한다 → B의 상태가 변하면 A도 변경되어야 하는 관계// A -> B 관계의 예
class B {
go() {
console.log("go 함수 실행")
}
}
class A {
go() {
new B().go()
}
}
new A().go()
// 의존성 주입 전
// 토큰인증을 통해 요청을 보냄
const response = fetch(`${url}`, {
headers: {
Authorization:localStorage.getItem("TOKEN");
}
})
// 로그아웃 시 토큰 삭제
localStorage.removeItem("TOKEN")
localStorage
에 의존하고 있다.// 의존성 주입
/*
TokenStorageInterface
save(token:string):void
get():string
remove():void
**/
class TokenStorage {
KEY = "TOKEN"
save(token) {
localStorage.setItem(KEY, token)
}
get() {
localStorage.getItem(KEY)
}
remove() {
localStorage.removeItem(KEY)
}
}
const tokenStorage = new TokenStorage()
// 토큰인증을 통해 요청을 보냄
const response = fetch(`${url}`, {
headers: {
Authorization: tokenStorage.get();
}
})
// 로그아웃 시 토큰 삭제
tokenStorage.remove();
TokenStorage
에 있는 localStorage만 수정해주면 사용할 저장소를 교체할 수 있다.의존성 주입을 할 때 의존관계역전원칙을 지키는 상태여야 한다.
위의 예시에서 TokenStorageInterface
가 추상화에 해당한다.