Подходит ли шаблон построителя для того же представления / вывода, но немного другого процесса? - PullRequest
2 голосов
/ 19 января 2020

Мой API имеет разные параметры. В зависимости от них у меня есть два слегка разных процесса. Но выход почти такой же. Должен ли я использовать шаблон строителей?

Например, предположим, что есть разные параметры запроса A и B:

// For case A: 
if (A){
  funX(A);
  funY();
  funZ();
}

// For case B :
if(B){
  funW(B);
  funX(B);
  funY();
  funZ();
}

Примечание: здесь процесс немного сложен. Такие как сторонний вызов API, фильтр, сортировка, сложные вычисления и т. Д.

1 Ответ

0 голосов
/ 19 января 2020

Простой факт наличия слегка отличающихся процессов не оправдывает и не требует построения шаблона.

К сожалению, в вашем вопросе ничего не говорится о структуре вашего объекта, поэтому сложно посоветовать, как ее реализовать. Как правило, вот несколько примеров:

  • полиморфизм : разные классы реализуют поведение, обещанное в их базовом классе, немного по-разному. В зависимости от ваших параметров вы должны создать правильный класс.
  • шаблонный метод представляет собой конкретное использование полиморфизма, где базовая структура процесса реализована в базовом классе и использует вспомогательные функции, которые реализованы несколько иначе.
  • композиция : части поведения реализованы в разных классах / объектах. Процесс может быть собран путем составления различных частей. Это более гибко, чем наследование.
  • стратегия , декоратор , команда , цепь ответственности - все это шаблоны проектирования которые используют композицию (иногда в связи с наследованием), что может позволить реализовать поведение немного (или радикально) по-другому. Множество других подходов используют композицию для достижения ваших целей.

В любом случае, старайтесь не использовать шаблоны проектирования в качестве каталога базовых c ингредиентов для решения вашей проблемы. Правильный путь противоположен: подумайте о том, как вы хотите решить проблему, а затем используйте шаблоны проектирования, если вы видите, что они соответствуют некоторым вашим намерениям.

Возвращение к шаблону построителя: это шаблон, предназначенный для построения сложных классов и применения одного и того же процесса построения к различным классам, которые следуют одному и тому же логике c для своего построения. Я не вижу такого рода проблем в вашем примере кода.

...