Знаете ли вы какие-либо шаблоны для программирования графического интерфейса? (Не шаблоны для проектирования графических интерфейсов)

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

Скажем, я хочу создать элемент управления, отображающий некоторые объекты, которые могут перекрываться. Теперь, если я нажимаю на объект, мне нужно выяснить, что делать (просто найти объект, который я могу сделать несколькими способами, такими как дерево квадратов и Z-порядок, это не проблема). А также я могу удерживать клавишу-модификатор, или какой-то объект активен с самого начала, что делает выбор или что-то еще немного сложнее. Если у меня есть экземпляр объекта, представляющий объект экрана, обрабатывать действие пользователя при нажатии или мастер-класс. и т. д. Какие шаблоны или решения существуют для подобных проблем?

Ответов (6)

Решение

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

Хотя существуют общие «темы» пользовательского интерфейса (например, работа с клавишами-модификаторами), фактическая реализация может сильно различаться.

У меня есть шаблоны дизайна O'Reilly's Head First и плакат , которые я считаю бесценными!

Shameless Plug: в этих ссылках используется идентификатор моего сотрудника.

Вы смотрите на профессиональное программирование приложений. Я долго искал советы и рекомендации, но безуспешно. К сожалению, вы не найдете ничего полезного, это сложная тема, и только с многолетним опытом вы сможете понять, как эффективно написать приложение. Например, почти каждая программа открывает файл, извлекает информацию, показывает ее в различных формах, разрешает обработку, сохранение, ... но никто точно не объясняет, в чем заключается хорошая стратегия и так далее. Кроме того, если вы пишете большое приложение, вам необходимо изучить некоторые стратегии, чтобы сократить время компиляции (иначе вы будете ждать часами при каждой компиляции). Например, вам могут помочь идиомы Impls в C++. И это еще не все. По этой причине разработчикам программного обеспечения хорошо платят и так много работы :-)

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

В этом случае может помочь шаблон - шаблон наблюдателя .

возможно, вы ищете что-то вроде «MouseTrap», которое я видел в некоторых статьях о codeproject (поиск по платформе пользовательского интерфейса)?

Я также нашел эту серию очень полезной http://codebetter.com/jeremymiller/2007/07/26/the-build-your-own-cab-series-table-of-contents/, где вы могли бы взглянуть на встроенные контроллеры и т.п.

Миха.

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

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

В "Объектно-ориентированном дизайне и шаблонах" Кея Хорстманна есть глава "Шаблоны и программирование графического интерфейса". В этой главе Хорстманн затрагивает следующие закономерности:

  • Менеджеры компоновки наблюдателей и
  • Компоненты паттернов стратегии,
  • Контейнеры и составной паттерн
  • Полосы прокрутки и шаблон декоратора