Я запутался между шаблоном единицы работы и шаблоном фабрики - PullRequest
0 голосов
/ 29 января 2019

Исходный шаблон фабрики https://en.wikipedia.org/wiki/Factory_method_pattern

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

Myвопрос в том, что шаблон единицы работы, а шаблон фабрики - это тот же шаблон с другим именем, я не уверен

Ответы [ 3 ]

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

Вероятно, не то же самое.Фабричный метод - это шаблон design .Единица работы - это объектно-реляционная модель поведения.

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

Нет, они не одинаковы.

У вас уже есть хорошее понимание шаблона Фабрики, как указано в вашем вопросе, и вы также связали ресурс, объясняющий это.Я не буду повторять эту часть здесь.

Фабричный шаблон - это шаблон Creation, где UnitOfWork - это поведенческий шаблон.

Единица работы (UoW) вводится в репозитории.UoW может создавать хранилища на основе вашего дизайна;но создание (хранилищ) не является целью UoW.Основываясь на дизайне, UoW в некоторых случаях может играть дополнительную роль Фабрики.

Как указано здесь :

Единица работыотслеживает все, что вы делаете во время бизнес-транзакции, которая может повлиять на базу данных.Когда вы закончите, он выяснит все, что нужно сделать, чтобы изменить базу данных в результате вашей работы.

Как вы можете видеть в приведенной выше цитате, основная ответственность UoW состоит в том, чтобы сохранитьотслеживать изменения, сделанные в бизнес-транзакции, и сбрасывать (или отменять) эти изменения в конце области.

Этот вопрос подробно обсуждает UoW;может помочь вам.

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

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

Почему вы думаете, что это одни и те же шаблоны?


Я должен вас разочаровать, они не одинаковые шаблоны.В то время как вы уже нашли и объяснили, что такое шаблон factory, unit of work является чем-то другим.

Мартин Фаулер:

Поддерживает список объектов, затронутых бизнес-транзакцией, икоординирует выписывание изменений.(« Шаблоны корпоративной архитектуры приложений » Мартина Фаулера)

Обычно он идет вместе с repository pattern и используется для:

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

Вы можете найти хорошее объяснение repository pattern вместе с unit of work pattern здесь .

...