【问题标题】:Design Patterns for Microsoft ( or other software producers) Desktop ApplicationMicrosoft(或其他软件生产商)桌面应用程序的设计模式
【发布时间】:2010-11-18 07:55:07
【问题描述】:

这个问题类似于

  1. What is the most common design patterns for any windows forms application?
  2. UI Design Pattern for Windows Forms (like MVVM for WPF)

但我想问一些更具体的问题:我想知道微软使用什么设计模式来构建他们令人印象深刻的桌面应用程序套件,包括 VS 2008、Microsoft Office 等。

有人有什么想法吗?我环顾四周,但最多只能找到模糊的细节。似乎没有很多关于这方面的信息。

编辑:好的,也许我会稍微放松一下这个问题:任何人都知道任何主要的软件生产商(不仅仅是微软)如何构建他们的桌面应用程序

【问题讨论】:

标签: design-patterns


【解决方案1】:

对于 Windows 窗体应用程序,我建议您尝试使用复合 UI 应用程序块 (CAB),您可以在 MS 站点的 Patterns & Practices 中找到大量信息。我自己并没有使用它,因为我主要开发 Web 应用程序,但我有一些同事一直在使用它并且非常推荐它。更多信息herecodeplex

如果您的目标是 WPF 应用程序,CAB 就不是那么好。你最好看看所谓的棱镜。我可以向您解释为什么 PRISM 在 WPF 应用程序中比 CAB 更好,但是互联网上已经有一个很好的解释,您可以找到 herecodeplex

这两个“解决方案”都是由 Microsoft 模式和实践团队创建的,可以在 CodePlex 上找到......所以我认为这是一个很好的方法!

【讨论】:

  • 遗憾的是,CAB 似乎是一个死项目。它有很多错误,而且它似乎并没有像许多人希望的那样工作。他们似乎把精力放在了 WPF/Silverlight 上,坦率地说,对于我们这些对 Winforms 有很多了解的人来说,在开始使用这些新技术的项目之前,我们宁愿继续使用 Winforms 一段时间。
【解决方案2】:

您可能想查看Rob Pierry 的一篇有趣的文章,

Discover the Design Patterns You're Already Using in the .NET Framework 在 MSDN 杂志中

这可能有助于意识到在.net 中编程时几乎每天都会使用一些模式,例如迭代器、观察者、装饰器、适配器、策略、工厂等

【讨论】:

    【解决方案3】:

    在 Mac OS X 上,Cocoa Web 框架的设计非常强调模型-视图-控制器方法的使用。我想 Apple 在构建其大多数应用程序时可能会使用 MVC,并且大多数 Mac 开发人员似乎使用相同的方法。不过很难确定,因为我无法访问大多数 Apple 应用程序的源代码。

    【讨论】:

      【解决方案4】:

      Gang of Four book 中发现的设计模式都来自检查现实世界的软件应用程序并查看使用了哪些常见解决方案。我猜想书中介绍的模式也被概括为对普通人群更有用。

      鉴于这一事实,我希望任何中型或大型应用程序都至少包含一些模式或四人帮所描述的模式的变体。

      【讨论】:

        【解决方案5】:

        嗯,根据我的卑微经验,我见过并使用过名为 PAC 的东西:

        表示 - 抽象 - 控制

        两个主要思想是:

        • 去关联演示文稿(ui 渲染/用户事件)从 抽象(您的处理:数据 访问、对象模型、硬件、IO、 ...)通过使用控制器 管理这两者之间的联系 零件。
        • 管理层次结构树 代理人是代理人 表示模块,一个抽象 模块和控制器模块。

        在具体实现中,Presentation 模块将低级 UI 事件转换为应用程序事件,控制器将事件流管理到更高级别。某些事件会发送到某个管理器,然后将它们分派到应用程序的处理部分(抽象)。

        这样:

        • UI 部分与 处理/抽象部分。 您可以更改 UI、使用 GUI 和 文本 UI、TCP/IP 命令 UI、...
        • UI 的层次结构 代理映射到您的 UI 元素 你可以在许多不同的地方重复使用 应用程序。

        当然还有很多其他模式在使用,但是这个主要架构是重用 UI 模块和处理/业务模块的关键。

        编辑:

        我检索到一篇关于 UI 架构的精彩文章,它比较了不同类型的架构,包括 PAC:

        a must read for UI/application architect

        【讨论】:

          【解决方案6】:

          我不认为所有窗口(甚至大多数)桌面应用程序都会(或应该)使用一组设计模式。

          虽然在服务器应用程序中大量使用的一些模式可能并不常见,但设计模式的使用又回到了每个单独程序的预期用途。

          【讨论】:

          • 最常见的设计模式将是最常用的桌面应用程序——这不是一个有用的答案。
          • 对不起,我觉得措辞可能有点模糊,我会尽量澄清。
          猜你喜欢
          • 2022-07-07
          • 2012-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-13
          • 1970-01-01
          • 2011-07-03
          相关资源
          最近更新 更多