Как связать пользовательский интерфейс и бизнес-логику - PullRequest
3 голосов
/ 27 апреля 2011

Я не буду описывать детали проекта или структуру, которую я использую, потому что вопрос более общий.

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

Как вы подходите в такой ситуации? Может быть, для моделирования системы, основанной на событиях, где события отправляются / обрабатываются? В моем случае требования меняются очень часто.

Ответы [ 2 ]

5 голосов
/ 27 апреля 2011

Используйте шаблон проектирования MVx, например MVC , MVP , MVVM .

В основном:
* Пользовательский интерфейс не должен звонить BL.
* Пользовательский интерфейс должен вызывать события (или, что еще лучше, использовать команды).
* События / команды, связанные с пользовательским интерфейсом, должны обрабатываться вне пользовательского интерфейса и вызывать BL.
* BL не должен вызывать пользовательский интерфейс.
* Либо измененные данные должны вызывать события, либо BL должен вызывать события.
* Пользовательский интерфейс должен знать, как представлять данные (предпочтительно использовать композицию для представления данных любого типа и не иметь полного пользовательского интерфейса, полагаясь на то, что типы данных не меняются).
* Интерфейс должен обновляться на событиях.

0 голосов
/ 27 апреля 2011

Это действительно зависит от вашего приложения.Если это веб-приложение, фреймворк, который вы используете, вероятно, имеет несколько рекомендаций о том, как связать код пользовательского интерфейса с логикой бизнеса (например, Spring @MVC).

С другой стороны, если вы пишете настольное приложение, я обычно использую шаблон наблюдателя / наблюдаемого, чтобы мой код пользовательского интерфейса получал уведомления о любых изменениях базовой модели.Опять же, подход к использованию зависит от контекста приложения.

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