도메인 패키지에 MyInterface
이라는 인터페이스가 있습니다. 또한 MyFactory
이라는 팩토리 클래스가 있으며 런타임시 MyInterface를 구현하는 클래스의 인스턴스를 만드는 데 도움이됩니다.서비스 레이어의 객체를 반환하는 도메인 패키지의 팩토리 메소드에서 전달할 객체 또는 클래스는 무엇입니까?
도메인 계층
interface MyInterface{
//some Domain specific methods here
}
class MyFactory{
public static MyInterface getInstance(Object resource) {
// return MyInterfaceImpl instance via the methods
// this Object can also be a Class argument, where I do
// Class.forName("").newInstance(); but this is a bad design.
}
class DomainServiceImpl {
public void domainMethod(Object res) {
MyInterface i = MyFactory.getInstance(res);
}
}
서비스 층
class Class1 implements MyInterface {
}
class Class2 implements MyInterface {
}
class ServiceClass {
public void service() {
domainServiceImpl.domainMethod(Object res);
}
}
그래서 나는 경우/다른 사람 또는 스위치를 사용하여 피하지 않고 서비스 계층의 올바른 인스턴스를 얻기 위해 도메인 층 내 공장 메서드를 작성하는 방법 순환 종속성.
옵션 : 반사를 사용할 수 있지만 확실하지는 않습니다.
"올바른 impl"이란 무엇입니까? 언제 그 기준을 결정할 것인가? – guillaume31
다른 버전의 리소스가 있고 각각의 버전에 대해 하나의 impl을 얻은 다음 해당 리소스 버전에 대해 올바른 impl을 인스턴스화하고 싶습니다. – user2340345
'ServiceClass.service()'는 어디에서 자원을 가져 옵니까? 다른 시점의 소스 코드 버전과 같은 버전을 의미합니까? – guillaume31