Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns Microsoft(或其他软件生产商)桌面应用程序的设计模式_Design Patterns - Fatal编程技术网

Design patterns Microsoft(或其他软件生产商)桌面应用程序的设计模式

Design patterns Microsoft(或其他软件生产商)桌面应用程序的设计模式,design-patterns,Design Patterns,这个问题类似于 但我想问一个更具体的问题:我想知道微软用什么样的设计模式来构建他们令人印象深刻的一系列桌面应用套件,包括VS2008、微软Office等等 有人有什么想法吗?我环顾四周,最多只能找到模糊的细节。这方面的信息似乎不多 编辑:好的,也许我可以稍微放松一下这个问题:有人知道任何主要软件生产商(不仅仅是微软)是如何构建他们的桌面应用程序的吗?我不认为所有windows(甚至大多数)桌面应用程序都会(或应该)使用一套设计模式 尽管一些在服务器应用程序中大量使用的模式可能并不常见,但设计

这个问题类似于

  • 但我想问一个更具体的问题:我想知道微软用什么样的设计模式来构建他们令人印象深刻的一系列桌面应用套件,包括VS2008、微软Office等等

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


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

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


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

    好吧,以我个人的经验,我看到并使用了一种叫做:

    表示-抽象-控制

    这两个主要观点是:

    • 要解除演示文稿(ui)的关联 渲染/用户事件) 抽象(您的处理:数据) 访问、对象模型、硬件、IO、, …)通过使用 管理这两者之间的联系 零件
    • 管理层次结构树的步骤 代理,其中代理是 表示模块,一种抽象 模块和控制器模块
    在具体实现中,表示模块将低级UI事件转换为应用程序事件,控制器将事件流管理到高级。一些事件会传递给某个管理器,该管理器将它们分派到应用程序的处理部分(抽象)

    这样:

    • UI部分与其他部分完全分离 处理/抽象部分。 您可以更改UI、使用GUI和 一个文本用户界面,一个TCP/IP命令用户界面
    • 用户界面的层次结构 代理映射到您的UI元素 您可以在许多不同的应用程序中重用 应用程序
    当然,还使用了许多其他模式,但这个主要架构是重用UI模块以及处理/业务模块的关键

    编辑:

    我检索了一篇关于UI体系结构的优秀文章,比较了不同类型的体系结构,包括PAC:


    在Mac OS X上,Cocoa web框架的设计非常强调使用模型-视图-控制器方法。我可以想象苹果在构建其大多数应用程序时可能使用MVC,而大多数Mac开发者似乎也使用同样的方法。不过,很难说清楚,因为我无法获得大多数苹果应用程序的源代码。

    在所有这些应用程序中找到的设计模式都来自于对现实世界中的软件应用程序的研究,并了解使用了哪些通用解决方案。我想,书中呈现的模式也被概括为对普通人群更有用


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

    对于Windows窗体应用程序,我建议您尝试使用复合UI应用程序块(CAB)您可以在MS站点的模式与实践中找到很多信息。我自己并没有使用它,因为我主要是在开发web应用程序,但我有一些同事一直在使用它,他们真的推荐它。更多信息,请访问:

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


    这两个“解决方案”都是由Microsoft模式与实践团队创建的,可以在CodePlex。。。所以我认为这是一个好办法

    您可以通过以下方式查看一篇有趣的文章:

    在MSDN杂志中


    它可以帮助实现一些模式,如迭代器、观察者、装饰器、适配器、策略、工厂等。。。在.net中编程时,几乎每天都在使用。最常见的设计模式将是最常用的桌面应用程序——这不是一个有用的答案。对不起,我认为措辞可能有点模糊,我将尝试澄清。遗憾的是,CAB似乎是一个死项目。。它有很多bug,而且似乎没有很多人希望的那么好。他们似乎在努力开发WPF/Silverlight,坦率地说,对于我们这些对Winforms有很多了解的人来说,在开始使用这些新技术的项目之前,我们宁愿继续使用Winforms一段时间。另请参见