제가 알기로 의존주입은
class Clerk { }
class Cafe {
private Clerk clerk;
public Cafe(Clerk clerk) {
this.clerk = clerk;
}
}
class Main {
public static void main(String[] args) {
Clerk clerk = new Clerk();
Cafe cafe = new Cafe(clerk);
}
}
위와 같이 외부에서 생성된 인스턴스를 전달받아 사용하는 걸로 알고 있는데
싱글턴 패턴과 같이
class Clerk {
public static final Clerk singleton = new Watashi();
private Clerk() { }
public static getInstance() {
return singleton;
}
}
class Cafe {
private Clerk clerk;
public Cafe() {
clerk = Clerk.getInstance();
}
}
이런 식으로 Cafe 클래스의 외부에서 만들어진 객체를 getInstance 메소드를 통해 반환받을 경우에도 의존주입으로 보나요?
외부에서 객체를 생성하고, Clerk 클래스와 Cafe 클래스 사이에 의존성도 해소돼서 의존주입으로 봐도 되지 않을까 저는 생각하는데
- dc official App
의존성 주입이라는 개념만 보자면, Cafe cafe = new Cafe(Clerk.getInstance()); 이런식으로 해야할듯?
내부에서 생성하지 말고 argument로 받자라는거니까
답변 감사염 - dc App
저거는 상관없는 상황인데 구현이랑 인터페이스가 분리돼있으면 (IClerk 같은걸 쓴다면) getInstance() 이거를 하기위해 구현이 필요하니까 의존성 주입이 아님
코드사이의 의존이 생김