设计模式与框架

时间:2008-11-26 09:27:24

标签: design-patterns frameworks

有人可以说明两者之间真正的区别吗?

12 个答案:

答案 0 :(得分:28)

设计模式是一个概念,或者是如何完成特定问题的收据。

框架是可以使用的代码,通常以一种使创建应用程序更容易的方式打包。

解释差异是没有意义的,因为它们是两个完全不同的东西。

答案 1 :(得分:23)

尽管它们是两个非常不同的东西,但可以说它们都解决了软件架构问题

  • 设计模式使用不同的预定义设计解决了许多软件架构问题(关于创建,行为,并发......)。 (设计为implementation of an architecture topic

  • 框架基于Hollywood Principle(“不要打电话给我们,我们称之为你”),您可以在其中实现指定的一些高级要求,并让框架执行其余的工作,打电话给你的实施。

关键区别在于范围凝聚力

  • 设计模式 范围

    • 班级设计模式(涉及班级)
    • 业务设计模式(涉及业务工作流程)
    • 应用程序设计模式(涉及应用程序)
  • 框架有 范围
    例如, .NET is a framework 由以下内容组成:

    • 一种语言(C#)
    • 运行时环境(CLR)
    • 图书馆的集合
      只需开发您需要的东西,让.Net框架调用您的类。

答案 2 :(得分:13)

|------------------------|
|          (------)      |
|          (ClassA)      |
|          (------)      |
| (-----------)          |
| ((Singleton))          |
| (-----------)          |
|         (---------)    |     
|         ((Factory))    |
|         (---------)    |
|                        |
|                        |
|------------------------|

Legend:
  |---|  Framework
  (---)  Class
  ()     Design Pattern

框架是一组执行特定任务的相关类。这些类可能会也可能不会实现某种设计模式。

答案 3 :(得分:10)

以下是GOF的回答:

  

因为模式和框架有   一些相似之处,人们常常想知道   他们是如何或甚至不同的。他们是   三种主要方式不同:

     
      
  • 设计模式更抽象   比框架。框架可以   体现在代码中,但仅限于示例   模式可以体现在代码中。   框架的优势在于   他们可以写下来   编程语言而不仅仅是   学习但执行和重用   直。相比之下,设计   本书中的模式必须是   每次使用时都会实施。   设计模式也解释了   意图,权衡和后果   一个设计。

  •   
  • 设计模式较小   建筑元素比   构架。一个典型的框架   包含几种设计模式,   但事实恰恰相反。

  •   
  • 设计模式不太专业   比框架。框架总是   有特定的应用   域。图形编辑器框架   可能在工厂中使用   模拟,但不会被误解   用于模拟框架。在   对比,设计模式   这个目录几乎可以使用   任何类型的申请。而更多   比专业设计模式   我们当然可能(比方说,   分布式设计模式   系统或并发编程),   即使这些也不会决定   应用程序架构如   框架会。

  •   

答案 4 :(得分:7)

设计模式是解决问题的完善设计。框架是用于使构建应用程序更容易的实际代码包。请注意,框架可以并且可能会使用设计模式。

答案 5 :(得分:4)

来自面向对象的软件开发使用Java 小平贾

  

虽然设计模式和框架都是用于捕获可重复使用设计的机制,但它们却截然不同。一方面,设计模式是可重用设计的示意图,这些设计不是具体程序,而且与语言无关。另一方面,框架是用特定编程语言编写的可编译程序,通常包含抽象类和接口。设计模式是框架的体系结构构建块。它们有助于使框架可扩展和可重用。框架通常包含许多协作设计模式的实现。

答案 6 :(得分:4)

Pattern support reuse of software architecture and design - Pattern capture the static and dynamic structures and collaboration of successful solution to problem that arise when building application in particular domain

Framework supports reuse of detail design and code - A framework is an integrated set of a component that collaborate to provide a reusable architecture for a family of related application

Together, design patterns and frameworks helps to improve software quality and reduce development time.

答案 7 :(得分:3)

设计模式是众所周知(设计)问题的标准解决方案。例如,Factory模式和Abstract Factory模式提供了实现设计的蓝图,以克服实例化对象时的常见问题。

另一方面,框架包含可以使用和扩展的基础结构,以开发自己的解决方案。例如,模型2“Web应用程序框架”将包含用于构建基于Web的应用程序的基础结构。它将包含控制器,一些gui元素和基类,我们可以扩展它们来创建我们的模型和业务逻辑。通常它包含管道代码和交互,当我们从它们的基类扩展时,它们会继承。框架的一些示例是Struts,JSF,Swing应用程序框架,JUnit测试框架等......

领先一步还有库,我们直接从代码中使用这些库。通常没有扩展他们的类。 Log4J就是一个库的例子。

答案 8 :(得分:0)

框架更具体地针对问题定义。为了编写一个设计模式,可以在适用的地方设计或使用。

答案 9 :(得分:0)

答案很简单: 框架:系统的元素如(组件,图层,类......)必须或应该彼此交互

设计模式:高频率问题的解决方案。它可能是MSSQL源代码转换为oracle,........并且有3种类型:分析,设计和实现模式。

答案 10 :(得分:0)

模式:一套公会线,构建应用程序。

框架:要遵循特定模式,请使用预构建类和库集来创建体系结构模式。

答案 11 :(得分:0)

尽管我认为缺少一个具体的例子,但已经以几种不同的方式回答了这个问题。

设计模式:解决了重复出现的问题的一组规则。规则定义了模式。没有代码可以复制粘贴来实现。开发人员应该理解规则然后执行。

示例:

  • 名称:测试驱动开发(TDD)
  • 问题:它确保编写的单元测试涵盖足够的用例场景,使您对生产代码充满信心。
  • 规则:它声明您应该首先编写测试,然后再通过这些测试之后编写代码。这样可以确保您不是在编写通过代码的测试,而是在编写通过测试的代码。

设计模式分为三类:

  • 创意设计模式:
  • 结构
  • 行为

我发现this link对解释它们有帮助。


框架:框架不要与库混淆,它是系统的基础结构,允许开发人员以标准化方式构建和部署软件应用程序。

示例:.Net Core框架是一个包含一组库的工具,开发人员可以使用Microsoft堆栈来编写可在多个不同环境(Windows,Mac OS,Linux)中部署的软件应用程序


:将一组可重用的方法/类组合在一起,以提供功能。

示例:System.Collections.dll库使.Net开发人员可以使用Hashtable之类的东西。


值得一提的是还要看其他答案,因为有时这只是个流行词,而且在一个环境与另一个环境之间是不同的。看here

我希望这会有所帮助。