有人可以说明两者之间真正的区别吗?
答案 0 :(得分:28)
设计模式是一个概念,或者是如何完成特定问题的收据。
框架是可以使用的代码,通常以一种使创建应用程序更容易的方式打包。
解释差异是没有意义的,因为它们是两个完全不同的东西。
答案 1 :(得分:23)
尽管它们是两个非常不同的东西,但可以说它们都解决了软件架构问题
设计模式使用不同的预定义设计解决了许多软件架构问题(关于创建,行为,并发......)。 (设计为implementation of an architecture topic)
框架基于Hollywood Principle(“不要打电话给我们,我们称之为你”),您可以在其中实现指定的一些高级要求,并让框架执行其余的工作,打电话给你的实施。
关键区别在于范围凝聚力:
设计模式 紧 范围:
框架有 大 范围:
例如, .NET is a framework 由以下内容组成:
答案 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)
尽管我认为缺少一个具体的例子,但已经以几种不同的方式回答了这个问题。
设计模式:解决了重复出现的问题的一组规则。规则定义了模式。没有代码可以复制粘贴来实现。开发人员应该理解规则然后执行。
示例:
设计模式分为三类:
我发现this link对解释它们有帮助。
框架:框架不要与库混淆,它是系统的基础结构,允许开发人员以标准化方式构建和部署软件应用程序。
示例:.Net Core框架是一个包含一组库的工具,开发人员可以使用Microsoft堆栈来编写可在多个不同环境(Windows,Mac OS,Linux)中部署的软件应用程序
库:将一组可重用的方法/类组合在一起,以提供功能。
示例:System.Collections.dll库使.Net开发人员可以使用Hashtable之类的东西。
值得一提的是还要看其他答案,因为有时这只是个流行词,而且在一个环境与另一个环境之间是不同的。看here。
我希望这会有所帮助。