2012-02-23 43 views
5

我已经是一个超过7年的python程序员,并且已经用PyQt进行了3年以上的设计......但我不是经过训练的Comp Sci。重大的。最近我一直在学习Go,并一直在积极地跟着Golang-nuts discussion list这充满了非常聪明的开发人员。在这个讨论小组中,我看到了很多对软件设计模式的引用,例如Observer,Reactor等。再一次,因为我不是CS专业,我从来没有真正学过这个术语和理论,但它让我惊讶。哪些软件设计模式可以执行常见的GUI框架?

什么样的设计模式可以完成像Qt,wx,GTK等常见的GUI框架?

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

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

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

回答

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。 (我真的想建议你读这真棒书)

  • 结构型式:
    • 适配器
    • 复合
    • 装饰
    • 门面
    • 飞锤
    • 代理

但在任何一种框架,你可以看到几种类型的混合模式:创建型模式,结构模式,行为模式。

我从Design Patterns书中发现了一个relational diagram between patterns,它可能对日常使用很有帮助。

UPD:很好所以加了answer

+0

非常感谢此信息。我对MVC非常熟悉,因为它对其他框架也很常见。我一定会检查你的参考。但是,我也希望有人会更专注于流行的GUI框架及其通信方法。事件循环,信号插槽,kvo,消息/事件传递等等。我当然可以阅读一本关于一般设计模式的书,但我想听到这些GUI框架的直接和特定的例子。任何额外的信息? – jdi 2012-05-15 16:58:12

0

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

还请查找这些GUI Design Books,与有关的行为模式和这个GUI Patterns Site有用。

+0

感谢您的回答,但我认为这是与我的问题有关的错误模式。这些设计模式更像是用户体验风格的描述。我在问科比。样式编程模式,例如观察者模式。不是用于创建复选框的模式,这对用户交互意味着什么 – jdi 2017-01-24 18:38:34

+0

我在查找您的问题时正在寻找相同类型的信息。仍然没有找到关于构建GUI项目代码的任何内容,例如“四人帮”的模式,但特别针对GUI(除了某些模式)。你有没有找到关于这个话题的根本? – Zon 2017-01-27 16:44:07

+0

接受的答案是迄今为止我所得到的最好答案 – jdi 2017-01-27 21:35:17