2012-02-23 3 views
5

Я был программистом на Python 7+ лет и проектировал с PyQt еще 3 года ... Но я не классический Comp Sci. главный. Совсем недавно я изучал Go и активно следил за Golang-nuts discussion list, который заполнен чрезвычайно умными разработчиками. Из этой дискуссионной группы я видел много ссылок на шаблоны разработки программного обеспечения, такие как Observer, Reactor и т. Д. Опять же, поскольку я не являюсь CS, я никогда не изучал всю эту терминологию и теорию, но это заставило меня задуматься. .Какие шаблоны проектирования программного обеспечения имеют общие рамки графического интерфейса?

Какие шаблоны дизайна имеют общие графические интерфейсы, такие как Qt, wx, GTK?

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

В качестве второстепенного элемента к этому вопросу: существуют ли интерфейсы графического интерфейса, которые пытаются использовать совершенно другой подход к графическому интерфейсу? Использует ли Cocoa/object-c те же шаблоны цикла событий, что и другие?

Update
Чтобы сузить фокус моего вопроса, и на основе ответа по @HDDimon, я в основном интересно о модели поведения (коммуникации):
http://en.wikipedia.org/wiki/Design_Patterns#Behavioral_patterns

ответ

5

Добрый день. Я думаю, что лучший ответ вы найдете в статье Мартина Фаулера GUI Architectures.

из этой статьи:

Model View Controller Возможно самый широкий цитируемый шаблон в разработке UI является Model View Controller (MVC) - это тоже самое исказили. Я потерял счет того, что видел что-то описанное как MVC, который оказался ничем не похож на него. Честно говоря, причина в том, что части классического MVC на данный момент не имеют смысла для богатых клиентов. Но на данный момент мы взглянем на на его происхождение.

В основе MVC, и мысль, что был самым влиятельным позже каркасов, что я называю Расстались Представление. Идея для разделенной презентации - это сделать четкое разделение между объектами домена, которые моделируют наше восприятие реального мира, и объекты представления, которые являются элементами GUI, которые мы видим на экране . Объекты домена должны быть полностью автономными и работать без ссылки на презентацию, они также должны иметь возможность поддерживать несколько презентаций, возможно одновременно. Такой подход также был важной частью культуры Unix и продолжает сегодня , позволяя манипулировать многими приложениями как с графическим интерфейсом , так и с интерфейсом командной строки.

В соответствии с этой статьей наилучшими типами шаблонов для разделения между любыми компонентами являются структурные шаблоны.

от «Design Patterns: Elements of Reusable Object-Oriented Software» от «Банды четырех»: Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес. (Я очень хочу порекомендовать вам прочитать эту удивительную книгу)

  • Структура Шаблоны:
    • адаптер
    • мост
    • Композитный
    • декоратор
    • Фасад
    • наилегчайшем
    • Прокси

Но в любом виде рамки вы можете увидеть перемешайте из нескольких типов моделей: Творения моделей, структурных моделей, поведенческих моделей.

Я нашел relational diagram between patterns из книги Design Patterns, это может быть полезно для повседневного использования.

UPD: Great SO answer добавлен.

+0

Большое спасибо за эту информацию. Я очень хорошо знаком с MVC, так как он довольно распространен и для других фреймворков. Я обязательно проверю ваши рекомендации. Но я также надеялся, что кто-то сосредоточит их ответ более конкретно на популярных графических интерфейсах и их методах общения. Цикл событий, интервалы сигналов, kvo, передача сообщений/событий и т. Д. Я, очевидно, мог прочитать книгу об общих шаблонах проектирования, но мне хотелось услышать прямые и конкретные примеры для этих графических интерфейсов. Дополнительная информация? – jdi

0

Я нашел Google Material Design идеальный GUI-ориентир, включая конструктивные ограничения и принципы в соответствии с шаблонами общей структуры.

См. Также GUI Design Books, связанные с Поведение модели и этот GUI Patterns Site полезный.

+0

Спасибо за ответ, но я думаю, что это неправильный шаблон по отношению к моему вопросу. Это шаблоны проектирования, которые являются скорее просто описаниями стиля UX. Я спрашивал о Comp Sci. Стильные шаблоны программирования, такие как шаблон Observer. Не шаблон для гребня флажка, и что это значит для пользователя. – jdi

+0

Я искал информацию о том же типе, когда нашел ваш вопрос. Все еще ничего не нашли о структурировании кода проекта GUI, что-то вроде шаблонов Gang of Four, но специально для GUI (за исключением некоторых шаблонов). Вы нашли что-то фундаментальное в этой теме? – Zon

+0

Принятый ответ был лучшим, что я получил до сих пор – jdi

Смежные вопросы