常见的GUI框架展示了哪些软件设计模式?

时间:2012-02-23 18:41:24

标签: design-patterns user-interface frameworks

我7年多来一直是一名python程序员,并且已经使用PyQt设计了3年以上......但我不是一个经典训练的Comp Sci。重大的。最近我一直在学习Go,并一直在积极关注充满极智能开发人员的Golang-nuts discussion list。从这个讨论组中,我看到了许多对软件设计模式的引用,例如Observer,Reactor等。再次因为我不是CS专业,我从未真正学过所有这些术语和理论,但它让我想知道.. 。

Qt,wx,GTK等常见GUI框架有哪些设计模式?

我感觉它是不同组件的混合模式,例如事件循环与信号/插槽或绑定与键值观察等等。我很想听听有关这些软件模式如何映射到这些框架的传统组件的解释或概括。

作为这个问题的一个次要元素:是否有GUI框架试图采用完全不同的模式方法来处理GUI解决方案? Cocoa / objective-c是否使用与其他事件相同的事件循环模式?

更新
为了帮助缩小我的问题的重点,并根据@HDDimon的答案,我主要想知道行为模式(沟通):
http://en.wikipedia.org/wiki/Design_Patterns#Behavioral_patterns

2 个答案:

答案 0 :(得分:5)

美好的一天。我认为你会在Martin Fowler的文章GUI Architectures中找到最佳答案。

来自这篇文章:

  

模型视图控制器 UI开发中最广泛的引用模式可能是模型视图控制器(MVC) - 它也是最多的   错误引用。我已经失去了一些我所看到过的东西   事实证明MVC并不像它。坦率地说很多   原因是经典MVC的部分内容确实没有意义   对于富有的客户这些天来。但目前我们会看一看   它的起源。

     

MVC的核心,以及对后期框架影响最大的想法,我称之为分隔演示文稿。该   分离演示背后的想法是做出明确的分工   领域对象之间模拟我们对现实世界的感知,   和表示对象是我们在上面看到的GUI元素   屏即可。域对象应该是完全独立的并且可以工作   没有参考演示文稿,他们也应该能够   可能同时支持多个演示文稿。这种方法   也是Unix文化的重要组成部分,并且至今仍在继续   允许通过图形操作许多应用程序   和命令行界面。

根据这篇文章,任何类型组件之间划分的最佳模式类型是结构模式。

来自“四人帮”的“Design Patterns: Elements of Reusable Object-Oriented Software”:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides。 (我真的很想推荐你阅读这本很棒的书)

  • 结构模式:
    • 适配器
    • Bridge
    • 组合
    • 装饰
    • 门面
    • 飞锤
    • 代理

但在任何类型的框架中,您都可以看到来自几种类型模式的混合:创造模式,结构模式,行为模式。

我在“设计模式”一书中找到了relational diagram between patterns,它可能对日常使用有所帮助。

UPD:很好的添加了answer

答案 1 :(得分:0)

我发现Google的Material Design是一个完美的GUI指南,包括符合一般结构模式的设计约束和原则。

请同时找到与行为模式相关的GUI Design Books 以及此GUI Patterns Site有用的内容。