有人可以说明两者之间真正的区别吗?
设计模式是一个概念,或者是如何完成特定问题的收据.
框架是可以使用的代码,通常以一种使创建应用程序更容易的方式打包.
解释差异是没有意义的,因为它们是两个完全不同的东西.
尽管它们是两个非常不同的东西,但人们可以说它们都解决了软件架构问题
设计模式使用不同的预定义设计解决了许多软件体系结构问题(关于创建,行为,并发性......).(设计是架构主题的实现)
框架基于好莱坞原则("不要打电话给我们,我们称之为你"),在那里你实现了一些指定的高级要求,让框架完成其余的工作,调用你的实现.
一个关键的区别是范围凝聚力:
设计模式的 范围很 窄:
课堂设计模式(涉及课程)
业务设计模式(涉及业务工作流程)
应用设计模式(涉及应用)
框架具有 很大的 范围:
例如,.NET是一个由以下组成的框架:
一种语言(C#)
运行时环境(CLR)
一组库
只是开发你需要的东西,让.Net框架调用你的类.
|------------------------| | (------) | | (ClassA) | | (------) | | (-----------) | | ((Singleton)) | | (-----------) | | (---------) | | ((Factory)) | | (---------) | | | | | |------------------------| Legend: |---| Framework (---) Class () Design Pattern
框架是一组执行特定任务的相关类.这些类可能会也可能不会实现某种设计模式.
这是GOF的答案:
由于模式和框架有一些相似之处,人们常常想知道它们是否有差异,甚至是否有所不同.它们在三个方面有所不同:
设计模式比框架更抽象.框架可以体现在代码中,但只有模式的例子可以体现在代码中.框架的优势在于它们可以用编程语言写下来,不仅可以研究,还可以直接执行和重用.相比之下,本书中的设计模式必须在每次使用时实施.设计模式还解释了设计的意图,权衡和后果.
设计模式是比框架更小的架构元素.典型的框架包含几种设计模式,但反之亦然.
设计模式不如框架专业化.框架始终具有特定的应用程序域.可以在工厂模拟中使用图形编辑器框架,但不会将其误认为是模拟框架.相比之下,本目录中的设计模式几乎可用于任何类型的应用程序.虽然比我们更专业的设计模式当然是可能的(比如分布式系统或并发编程的设计模式),但即使这些也不会像框架那样规定应用程序架构.
设计模式是解决问题的完善设计.框架是用于使构建应用程序更容易的实际代码包.请注意,框架可以并且可能会使用设计模式.
模式支持软件体系结构和设计的重用 -模式捕获静态和动态结构以及成功解决特定领域中构建应用程序时出现问题的解决方案的协作
框架支持细节设计和代码的重用 -框架是组件的集成集,这些组件协作以为一系列相关应用程序提供可重用的体系结构
设计模式和框架一起有助于提高软件质量并减少开发时间。