Разница между Чистым изготовлением и Направлением

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

Чистые производственные и косвенные действия действуют для создания и назначения обязанностей промежуточному объекту, так может ли кто-нибудь объяснить, в чем разница между этими шаблонами проектирования?

Спасибо!

Ответ 1

Вы используете Indirection, если хотите создать более низкую связь между компонентами. Пример Larman предлагает в применении UML, а Patterns - класс TaxCalculatorAdapter. Чтобы оградить клиентов от необходимости знать внутреннюю работу возможного адаптера, он скрывает их с косвенным движением, только подвергая действительный API. Это Indirection будет очень привязано к адаптированным, но только слабо связано с клиентами.

PersistentStorage из Pure Fabrication действительно является Indirecton (ларман говорит так в книге) тем, что он обеспечивает более низкое сцепление. Pure Fabrication выходит за рамки этого, хотя в нем он создает объекты, которые не являются частью вашей модели домена.

Пример Larman дает класс домена Sale. Поскольку Sale имеет все данные для сохранения, это будет кандидатом на сохранение логики для сохранения продажи (Information Expert). Однако логика персистентности не связана с концепцией Sale, поэтому класс станет incohesive. Кроме того, связывая продажу с конкретным API БД, вы ограничиваете повторное использование ( "Направление на спасение" ). И поскольку сохранение является общей деятельностью, вы, вероятно, также дублируете код в объектах, которые также необходимо сохранить. Чтобы этого избежать, вы делаете что-то (чистую фабрику), то есть создаете что-то, что не является частью модели домена (здесь: a PersistentStorage), но все же фиксирует существенную активность в вашем приложении.

Таким образом, Pure Fabrication - это специализация или, скорее, вариант Indirection.

Ответ 2

Изготовление является наиболее важной частью для нас. Существует множество видов продукции, таких как лазерная резка, обработка алюминия, обработка нержавеющей стали и т.д., А также FMB Trading and Engineering Pte Ltd - компания № 1 в Сингапуре.

Ответ 3

Чистое изготовление и косвенность - принципы из GRASP. Следующие примеры в этой статье dzone могут прояснить ваше представление о pure fabrication и indirection.

Чистое изготовление:

Мы знаем, что модель домена для банковской системы содержит классы, такие как Account, Branch, Cash, Check, Transaction и т.д. Классы доменов должны хранить информацию о клиентах. Чтобы сделать это, можно делегировать ответственность за хранение данных классам домена. Эта опция уменьшит связность классов домена (более чем одна ответственность). В конечном итоге этот параметр нарушает принцип SRP.

Другой вариант - ввести другой класс, который не представляет никакой концепции домена. В банковском примере мы можем ввести класс под названием PersistenceProvider. Этот класс не представляет какой-либо предметной области. Целью этого класса является обработка функций хранения данных. Поэтому PersistenceProvider - чистая выдумка.

Косвенность:

Этот принцип отвечает на один вопрос: как вы заставляете объекты взаимодействовать таким образом, чтобы связь между ними оставалась слабой?

Решение: возьмите на себя ответственность за взаимодействие с промежуточным объектом, чтобы связь между различными компонентами оставалась низкой.

Например, программное приложение работает с различными конфигурациями и параметрами. Чтобы отделить код домена от конфигурации, добавляется определенный класс, что показано в следующем листинге:

Public Configuration{
  public int GetFrameLength(){
    // implementation
  }
  public string GetNextFileName(){
  }
 // Remaining configuration methods
}

Таким образом, если какой-либо объект домена хочет прочитать определенный параметр конфигурации, он запросит объект класса Configuration. Поэтому основной код отделен от кода конфигурации.

Если вы прочитали Принцип чистого производства, этот класс конфигурации является примером чистого производства. Но целью косвенного обращения является создание разъединения. С другой стороны, цель чистого изготовления состоит в том, чтобы поддерживать доменную модель в чистоте и представлять только доменные концепции и обязанности.

Многие шаблоны проектирования программного обеспечения, такие как Adapter, Facade и Observer, являются специализациями принципа косвенности.

Ответ 4

Чистый производственный класс - это тип класса, который не имеет понятия в разработанной проблемной области. Этот класс назначается с высокой степенью сцепления ^, низкой связью и повторным использованием. Направление Это решает проблему распределения ответственности за избежание прямой связи между вещами. Это также обеспечивает низкую связь между объектами и поддерживает более высокие возможности проживания.