У меня есть пакет домена, который имеет интерфейс под названием MyInterface
. У меня также есть фабричный класс MyFactory
, который должен помочь в создании экземпляров классов, которые реализуют MyInterface, во время выполнения.Какой объект или класс передать в Factory методе в пакете объектов, возвращающем объекты уровня сервиса?
домена Layer
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);
}
}
Так как я должен написать мой фабричный метод в области слоя, чтобы получить правильный экземпляр службы слоя без использования, если/другое или переключатель и во избежание циклические зависимости.
Опции: можно использовать отражения, но не знаете, как это сделать.
Что такое «правильный имп»? Когда и на основе каких критериев это решение будет принято? – guillaume31
Предположим, что у меня разные версии ресурсов, и у меня есть один имп для каждой версии, тогда я хотел бы создать экземпляр правильной версии для этой версии ресурса. – user2340345
Где 'ServiceClass.service()' получить ресурс? Вы имеете в виду версию, как в версиях вашего исходного кода в разные моменты времени? – guillaume31