有人能说明一下这两者之间的真正区别吗?
有人能说明一下这两者之间的真正区别吗?
设计模式是一个概念,或者说是解决特定问题的方法。
框架是一段可直接使用的代码,通常以一种便于创建应用程序的方式打包。
讲述两者之间的区别并没有意义,因为它们是完全不同的东西。
虽然它们是两件非常不同的事情,但可以说它们都解决了软件架构问题。
设计模式通过不同预定义的设计来解决许多与软件架构有关的问题(关于创建、行为、并发等...)。 (设计是架构主题的实现)
框架基于Hollywood原则("Don't call us, we call you"),您按照规定实现一些高级需求,然后将其余工作交给框架来调用您的实现。
一个关键区别是范围内聚性:
设计模式具有 紧密 的范围:
框架具有 大 的范围:
例如,.NET是一个框架由以下组成:
|------------------------|
| (------) |
| (ClassA) |
| (------) |
| (-----------) |
| ((Singleton)) |
| (-----------) |
| (---------) |
| ((Factory)) |
| (---------) |
| |
| |
|------------------------|
Legend:
|---| Framework
(---) Class
() Design Pattern
框架是一组相关的类,用于执行特定任务。这些类可能实现或不实现某个特定的设计模式。
以下是GOF的回答:
因为模式和框架有一些相似之处,人们经常想知道它们如何以及是否不同。它们在三个主要方面不同:
设计模式比框架更抽象。框架可以体现在代码中,但只有模式的示例可以体现在代码中。框架的一个优点是,它们可以用编程语言写下来,不仅可以被研究,而且可以直接执行和重复使用。相反,在本书中的设计模式每次使用时都必须实现。设计模式还解释了设计的意图、权衡和后果。
设计模式比框架更小型化。典型的框架包含几个设计模式,但反过来则永远不成立。
设计模式比框架专业性较弱。框架总是有一个特定的应用领域。例如一个图形编辑器框架可以在工厂仿真中使用,但它不会被误认为是仿真框架。相反,在此目录中的设计模式可以在几乎任何类型的应用程序中使用。虽然比我们更专业化的设计模式当然是可能的(例如,分布式系统或并发编程的设计模式),但即使这些设计模式也不像框架那样指定一个应用程序架构。
设计模式是解决问题的一种成熟的设计方法。框架是实际的代码包,用于使应用程序的构建更加容易。请注意,框架可以并且可能会使用设计模式。
来自《Java面向对象软件开发》一书,作者是夏平·贾:
尽管设计模式和框架都是用于捕获可重用设计的机制,但它们有很大的区别。一方面,设计模式是可重用设计的示意性描述,不是具体的程序,并且与编程语言无关。另一方面,框架是用特定编程语言编写的可编译程序,通常包含抽象类和接口。设计模式是框架的架构基石。它们有助于使框架具有可扩展性和可重用性。框架通常包含许多协作设计模式的实现。
模式支持软件架构和设计的重用 - 模式捕捉到成功解决特定领域应用程序构建问题的静态和动态结构以及协作。
框架支持详细设计和代码的重用 - 框架是一组集成的组件,它们协作提供可重用的架构,适用于相关应用程序的家族。
设计模式和框架共同有助于提高软件质量并减少开发时间。
这个问题已经有了几种不同的回答,但我认为缺少一个具体的例子。
设计模式:一组规则的集合,用于解决重复出现的问题。这些规则定义了模式。没有代码可供复制粘贴来实现此目标。开发人员应该理解规则,然后实施它们。
例如:
设计模式分为三类:
我发现 this link 对解释它们很有帮助。
框架:框架与库不同,是支撑系统的基本结构,使开发人员能够以标准化的方式构建和部署软件应用程序。
例如:.Net Core框架是一个工具,包含一组库,使得使用Microsoft技术栈的开发人员能够编写可以在多个不同环境(Windows、Mac OS、Linux)中部署的软件应用程序。
值得一提的是,有时候它只是一个流行词汇,并且在不同的环境中有所不同,因此查看其他答案也很重要。请点击这里。
希望这可以帮助到你。
答案非常简单: 框架:系统中的元素(如组件、层、类等)之间必须或应该如何交互。
设计模式:解决高频问题的方案。它可以是将MSSQL源代码转换为Oracle等,有三种类型:分析、设计和实现模式。