Шаблон Java FactoryJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Шаблон Java Factory

Сообщение Anonymous »


У меня есть модуль A и модуль B, каждый из которых имеет определенные службы, и у меня есть модуль C, который не имеет никаких зависимостей от A и B, поэтому я хочу вызывать службы из модулей A и B, и я хочу добиться этого, используя фабричный шаблон.

в модуле C я создал этот интерфейс, и это будет общий интерфейс, который будет реализован в модулях A и B

публичный интерфейс ThirdPartyCallsStrategy { void Apply (String orderId); } Это пример фабричного класса, который предоставит соответствующий экземпляр на основе параметра типа

@Component @AllArgsConstructor общественный класс CoreCallsFactory { частная статическая окончательная строка A_PACKAGE = "com.testA.service"; частная статическая окончательная строка A_CLASS = «TestClassA»; частная статическая окончательная строка B_PACKAGE = "com.testB.service"; частная статическая окончательная строка B_CLASS = «TestClassA»; @SneakyThrows public ThirdPartyCallsStrategy createThirdPartyCallsStrategy (тип String) { Класс clazz; если (type.equals("A")) { clazz = Class.forName(String.format("%s.%s", A_PACKAGE, A_CLASS)); return (ThirdPartyCallsStrategy) clazz.getDeclaredConstructor().newInstance(); } если (type.equals("B")) { clazz = Class.forName(String.format("%s.%s", B_PACKAGE, B_CLASS)); return (ThirdPartyCallsStrategy) clazz.getDeclaredConstructor().newInstance(); } вернуть ноль; } } ThirdPartyCallsStrategy реализуется в разных сервисах в разных модулях

И, наконец, в модуле C я создаю экземпляр посредством отражения Java, но это будет во время выполнения, и это может быть сделано через исключения позже во время выполнения, а не во время компиляции

public String checkStatusAndRedirect(String orderId, String type) { логический статус = checkStatus (orderId); StringBuilder PaymentResultUrl = новый StringBuilder(frontUrl + "/public/Payment/status?success="); если (статус) { coreCallsFactory.createThirdPartyCallsStrategy(тип).apply(orderId); платежResultUrl.append(Boolean.TRUE); } еще { платежResultUrl.append(Boolean.FALSE); } вернуть платежResultUrl.toString(); } Итак, мне нужен более чистый способ изменить эту реализацию.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»