Как реализовать рабочий процесс внутри объекта - PullRequest
1 голос
/ 16 января 2012

У меня есть объект, который представляет некоторый документ, хранящийся в реляционной базе данных (отображение O / R).Этот документ имеет поле состояния, которое определяет его состояние.Каждый статус (т. Е. Запись, ожидание подтверждения, отправка, оплата и т. Д.) Имеет свои собственные правила и требования проверки.

Мне интересно, какова правильная ОО реализация такого рабочего процесса.Самый простой способ сделать это - поместить несколько операторов if, таких как

if (status == что-то || status == что-то еще), чтобы проверить, можно ли изменить дату ();

но в сложном сценарии это становится чрезвычайно трудно читать.

Предложения для хорошего дизайна?

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Посмотрите на Strategy Pattern.Для каждого возможного состояния вы должны создать класс, реализующий выполняемые шаги.

Возможно, вы захотите объединить его с фабрикой, которая создает правильный объект стратегии в зависимости от состояния документа, когда он читается из БД..

1 голос
/ 16 января 2012

Я думаю, вам нужно просмотреть Windows Workflow Foundation .Он является частью .NET и позволяет вам относительно легко создавать рабочие процессы.

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