В моем приложении, которое находится на C ++, я использую MVC Pattern.У меня есть много объектов модели и список действий, которые можно выполнить с помощью пользовательского интерфейса.Но действия могут быть выполнены, только если выполнены некоторые условия:
- Я не могу показать objectA, если показывается objectB или objectC,
- и не может выполнять никаких действийдля объекта A, если он не отображается
- другие более сложные условия
Поэтому я подумал о том, чтобы иметь класс, который будет проверять, если объекты определенного класса имеют допустимые действия в данный момент:
AActionValidator
{
bool CanDoX();
bool CanDoY();
};
BActionValidator
{
bool CanDoZ();
};
Классы Controllers спросят у ActionValidators, доступна ли какая-либо операция в определенный момент, и если да, они выполнят эту операцию.
Проблема 1: Но как автоматически отключить / включить элементы управления пользовательским интерфейсом, когда какое-либо действие становится доступным / недоступным?Я думаю, что эти классы ActionValidators также должны генерировать какое-то событие, когда это происходит?Но тогда мои элементы управления пользовательским интерфейсом должны подключаться к событиям разных классов ActionValidator
Проблема 2: Может быть, лучше иметь один глобальный класс ApplicationActionManager, который генерирует события и хранит информацию о допустимых действиях для всех объектов в приложении?Но я боюсь, что в конечном итоге он станет одним большим непоследовательным классом
Проблема 3: Когда ObjectA отображается, контроллер может также отключить кнопку Показать и включить кнопку Скрыть, потому что это простой случай, но это работа контроллера для обновления состояния управления?Или я должен выдавать состояние show / hidden также как событие?
Любое понимание того, как это можно сделать.Спасибо