Как обращаться с несколькими фабриками - PullRequest
0 голосов
/ 08 января 2019

Я работаю над дизайном проекта и столкнулся с интересной проблемой.

По сути, есть веб-форма, которая позволяет кому-то создавать новую работу для моей службы планировщика. Форма будет содержать такие свойства, как:

Купить Обмен
Продам Обмен

Для этого, скажем, у нас есть для каждого из этих полей:

Купить Exchange: Exchange1, Exchange 2 Продам биржу: SellExchange1, SellExchange2

Я должен иметь возможность выбрать из формы «Купить биржи» или «Продать биржи», но между моделью «Купить биржу» или «Продать биржу» в модели домена нет явной связи

Моя текущая задача - чтобы служба планировщика при создании нового задания вызывала фабрику, которая будет создавать провайдера для выбранной Buy Exchange. Оба провайдера будут реализовывать интерфейс, содержащий метод Sell ().

Мой вопрос: должен ли я использовать вторую фабрику для обмена продаж, которая будет вызываться методом продажи интерфейса? Поскольку логика «продажи» будет отличаться для любой биржи продаж, мне интересно, существует ли для этого конкретный шаблон проектирования?

Вот быстрый псевдокод для моего дизайна

public interface IExchangeFactory()
 { 
   // Create Exchange 1 or Exchange 2
 }

public class ExchangeFactory : IExchangeFactory
 {
    // Either return Exchange 1 or Exchange 2 provider
 }

 public class SellExchangeFactory : IExchangeFactory
 {
    // Either return Sell Exchange 1 or Sell Exchange 2 provider
 }

 public class Exchange1Provider : IExchange1Provider
  { 
    public void PerformPurchase(){
      { 
         // Purchase Logic Here
      }

     public void Sell()
      {
        // Instantiate Sell Exchange chosen in form

      }
}

public class Exchange2Provider : IExchange2Provider
  { 
    public void PerformPurchase(){
      { 
         // Purchase Logic Here
      }

     public void Sell()
      {
        // Use sell exchange factory to instantiate sell exchange provider
      }
}

Будет ли это правильным решением для решения этой проблемы? Я не был уверен, как искать этот вопрос, так как я не уверен в терминологии для этого

1 Ответ

0 голосов
/ 08 января 2019

Я думаю, это неплохая идея иметь две фабрики, каждая для каждого типа функциональности, покупать / продавать. Но держите их независимыми.

т.е. клиент выбирает купить поставщика А и продать поставщика Б. Таким образом, с заводов вы получаете правильных поставщиков услуг покупки и продажи для A и B. соответственно.

Этот шаблон, который вы предлагаете использовать, по сути является шаблоном Стратегия, если вы заинтересованы в его чтении. Я думаю, что вы могли бы связать его с шаблоном Template Method, если все поставщики должны выполнить одну и ту же последовательность шагов с различиями в реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...