Факторизация командных методов

Факторизация командных методов

Одним из главных негативных факторов, с которыми встречаешься при разработке сложных систем меню GUI, является перспектива кажущейся бесконечной цепочки case операторов, которая чрезвычайно затрудняет отладку. Общий дух объектно-ориентированного программирования нацеливает на конструирование функциональных пакетов, которые будут работать всегда, даже тогда, когда будут разработаны и добавлены в систему многие новые пакеты. По этой причине хороший объектно-ориентированный дизайн требует избегать создания монолитных громоздких командных методов для обработки всех имеющихся меню. За счет факторизации, обработки командных сообщений Windows в нескольких отдельных командных методах, каждый из которых может работать как автономно, так и во взаимодействии друг с другом, программы компилируются быстрее, их легче отлаживать, они требуют меньше ресурсов памяти и их проще модифицировать.

Основной принцип Актора

Основной принцип поистине прост. Когда для класса Актора определяется командный метод, обеспечивается возможность приема им WMCOMMAND сообщений от Windows и прерывания его выполнения. Программирование командного метода обычно принимает форму последовательности case операторов, которые проверяют элемент управления IDs различных позиций меню и затем посылают соответствующие сообщения. Командный метод должен быть либо в классе, определяющем окно, в котором расположено данное меню, либо соответствующие сообщения извещения (notification) должны передаваться к другим объектам. Однако в случае, когда число позиций меню слишком велико, этот подход неприменим. Вместе с тем главный командный метод можно написать так, что будет вызываться подкомандный метод, который предназначается для работы с несколькими различными функциональными пакетами. Таким образом, подкомандный метод можно написать так, что он всегда будет работать с каждым меню или с другим элементом управления, не обращая внимания на контекст, в котором используется. За вызов подчиненных командных методов, которые требуются, отвечает командный методхозяин.


Карта сайта


Информационный сайт Webavtocat.ru