Инкапсуляция вариантов использования в программном обеспечении - PullRequest
3 голосов
/ 18 января 2010

Я обычно пишу сценарии использования для всего программного обеспечения, которое я разрабатываю. Для каждого варианта использования я обычно пишу контроллер, который направляет поток (реализует вариант использования).

Я недавно начал разрабатывать веб-приложения с использованием Asp.net MVC. Один из лучших приемов Asp.net MVC - сохранять очень мало логики в контроллерах. Я не могу понять, как я могу изменить свой дизайн, чтобы отразить это.

Мне нужен способ инкапсуляции моих вариантов использования.

Ответы [ 3 ]

1 голос
/ 18 января 2010

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

1 голос
/ 13 сентября 2011

Создание бизнес-компонента для инкапсуляции вариантов использования. Например, если у вас есть система управления отпуском, у вас будут варианты использования, такие как подать заявку на отпуск, утвердить запрос на отпуск, отклонить запрос на отпуск и т. Д. Для этого вы можете создать бизнес-компонент (класс) под названием Leave Manager с методами (функциями) / операции), такие как «Применить», «Утвердить», «Отклонить» и т. д. Эти методы будут инкапсулировать ваши варианты использования. Эти методы будут принимать ваши бизнес-сущности и классы хранилища данных в качестве входных данных и выполнять сценарий использования.

class LeaveManager{
     int Apply(from, to);

     bool Approve(leaveApplicationId, approverId);

     bool Reject(leaveApplicationId, approverId);
}

Затем вы можете использовать этот бизнес-компонент в своих контроллерах для выполнения сценария использования, указав необходимые параметры.

1 голос
/ 18 января 2010

Я думаю, что иметь толстую модель и тонкий контроллер - это хорошая практика для любого языка, а не для .NET MVC. Ознакомьтесь с этой замечательной статьей , в которой рассматривается пример сценария, демонстрирующий преимущества жирного режима в Ruby on Rails (но идеи применимы к любому языку).

Для представления прецедентов в вашем коде, я думаю, гораздо лучше для них использовать тестовые, а не контроллеры.

...