【问题标题】:Which software design patterns do common GUI frameworks exhibit?常见的 GUI 框架展示了哪些软件设计模式?
【发布时间】:2012-02-23 18:41:23
【问题描述】:

我现在已经是 7 年以上的 Python 程序员,并且使用 PyQt 进行设计已经 3 年以上......但我不是一个受过经典训练的 Comp Sci。重大的。最近我一直在学习Go,并积极关注Golang-nuts discussion list,那里充满了非常聪明的开发人员。在这个讨论组中,我看到了很多关于软件设计模式的参考,比如 Observer、Reactor 等。同样因为我不是 CS 专业的,我从来没有真正学习过所有这些术语和理论,但这让我感到奇怪。 .

常见的 GUI 框架(如 Qt、wx、GTK)展示了哪些设计模式?

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

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

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

【问题讨论】:

    标签: design-patterns user-interface frameworks


    【解决方案1】:

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

    来自这篇文章:

    模型视图控制器可能在 UI 开发中引用最广泛的模式是模型视图控制器 (MVC) - 它也是最 引用错误。我已经记不清有多少次我看到描述的东西了 作为MVC,结果完全不是这样。坦白说很多 原因是经典 MVC 的某些部分并没有真正的意义 这些天来为富有的客户服务。但现在我们来看看 它的起源。

    MVC 的核心,也是对后来的框架影响最大的想法,我称之为Separated Presentation。这 分离演示背后的想法是明确划分 在模拟我们对现实世界的感知的领域对象之间, 和表示对象,它们是我们在 屏幕。域对象应该是完全独立的并且可以工作 在不参考演示文稿的情况下,他们也应该能够 支持多个演示,可能同时。这种方法 也是 Unix 文化的重要组成部分,并延续至今 允许通过图形操作许多应用程序 和命令行界面。

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

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

    • 结构模式:
      • 适配器
      • 复合
      • 装饰器
      • 立面
      • 蝇量级
      • 代理

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

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

    UPD:添加了很棒的 SO answer

    【讨论】:

    • 非常感谢您提供此信息。我非常熟悉 MVC,因为它在其他框架中也很常见。我一定会查看您的参考资料。但是,我也希望有人将他们的答案更具体地集中在流行的 GUI 框架及其通信方法上。事件循环、信号槽、kvo、消息/事件传递等。我显然可以阅读一本关于一般设计模式的书,但我想听听这些 GUI 框架的直接和具体示例。有什么额外的信息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多