싱글톤 패턴은 사용하기가 쉽고 굉장히 실용적이지만 모듈 간의 결합을 강하게 만들 수 있다는 단점이 있다.
👉🏻 **의존성 주입(DI, Dependency Injection)**을 통해 모듈간의 결합을 조금 더 느슨하게 만들어 해결할 수 있다.

이를 통해 메인 모듈(상위 모듈)은 하위 모듈에 대한 의존성이 떨어지게 된다. (= ‘디커플링이 된다’)
import axios from "axios";
const fetchResource = (httpClient) => (url) =>
httpClient(url)
.then((data) => data.json)
.catch((error) => console.log(error));
const httpClient = axios.create({
baseURL: "<https://minhyeongi.xyz>",
method: "GET",
headers: {
"Access-Control-Allow-Origin": "*"
}
});
const httpClient2 = axios.create({
baseURL: "<https://minhyeongi.xyz>",
method: "POST",
headers: {
"Access-Control-Allow-Origin": "*"
}
});
const getData = fetchResource(httpClient1);
//httpClient라는 서비스를 주입 / fetchResource : 클라이언트
getData("/resourcepath").then((response) => console.log(response.data));
fetchResource는 httpClient가 무엇을 가지고 있는지 알 필요 없이 httpClient를 불러서 사용하기만 한다.