Какой будет лучший шаблон проектирования для этой проблемы:
У меня есть Объект А. Объект А может быть зарегистрирован или удален из базы данных в зависимости от запроса пользователя.
Проверка данных выполняется перед регистрацией или удалением объекта. Существует ряд правил, которые необходимо проверить перед регистрацией объекта, и другой набор правил для удаления. Некоторые из этих правил являются общими для обеих операций.
Пока что я думаю, что шаблон проектирования « Цепочка ответственности» подходит больше всего, но у меня возникают проблемы с его реализацией.
design-patterns
melodui
источник
источник
Ответы:
Обычно я использую отдельный класс валидатора для проверки каждого варианта использования. Например, перед добавлением продукта в базу данных я буду использовать AddProductValidator для проверки бизнес-правила, перед удалением продукта я буду использовать DeleteProductValidator для проверки и т. Д. Общее бизнес-правило может быть извлечено в спецификационный класс (шаблон спецификации) и совместно использовано классами валидатора.
Чтобы структурировать класс валидатора, я следую подходу здесь: http://lostechies.com/jimmybogard/2007/10/24/entity-validation-with-visitors-and-extension-methods/
Если вы используете .NET, я думаю, что вы можете рассмотреть Fluent Validation ( https://github.com/JeremySkinner/FluentValidation ). Я думаю, что это довольно круто и довольно близко к статье, которую я упоминал выше
источник
Как описано, я бы, вероятно, реализовал тип параметра . Таким образом, я мог бы вернуть «None» или проверенное значение (возможно, лениво), но это - деталь реализации и приятно приводит к идее использования Decorator .
Конечно, если интерфейс станет некрасивым, я бы использовал фасад .
источник