分享免费的编程资源和教程

网站首页 > 技术教程 正文

设计模式概念、分类、设计原则介绍

goqiw 2024-10-06 08:15:04 技术教程 24 ℃ 0 评论

设计模式概念

设计模式是解决常见软件设计问题的经验总结,可以看成是一本代码设计宝典,帮助开发人员更好地完成软件设计工作。

分类

创建型

提供创建对象的机制,提升已有代码的灵活性和可复用性。

单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式、原型模式

结构型

介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效

代理模式、桥接模式、装饰者模式、适配器模式、门面模式、组合模式、享元模式

行为型

负责对象间的高效沟通和职责传递委派

观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式

设计模式原则

单一职责原则

一个类只负责一项职责,这样可以使得类更加可维护、可扩展、可重用。

举例:比如说一辆汽车的刹车踏板,它的作用就是让行进间的汽车停止的,如果现在这个刹车踏板的功能改成了,踩一半是油门,踩到底是刹车,就违反了单一职责,会容易出事故。

单一职责原则优点:

1、提高代码的可读性和可维护性:一个类只负责一个职责,代码更加清晰,更

容易理解和维护。

2、降低类的复杂度:一个类只负责一个职责,类的复杂度更低,更容易进行测试和调试。

3、降低代码的耦合度:当一个类只负责一个职责时,不同的职责可以分配到不同的类中,不同的类之间相互独立,从而降低了代码的耦合度。

4、提高代码的可复用性:一个类只负责一个职责,可以更容易的被其他模块复用。

5、便于扩展和维护:当需求变化时,如果每个类只负责一个职责,我们只需要修改相关的类即可,不需要修改其他的类,从而更容易进行扩展和维护。

开放封闭原则

软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。也就是说,我们应该通过添加新的代码来扩展软件的功能,而不是修改已有代码。

举例:我还是用汽车举例, 我是一个广东人,今年冬天我要开车去东北去东北吃雪,因为广东人好吃嘛,没吃过雪 想去长白山吃点新鲜的雪。东北雪很大,就需要给这个车的轮胎做防滑。 其实很简单只要给轮胎装上防滑链就可以了,这就属于是对轮胎的开放扩充。 在轮胎上面新增了防滑链,没有改变轮胎的原有功能。我们不能因为为了给轮胎做防滑,而把汽车引擎换掉了。

里氏替换原则

子类必须能够替换掉它们的父类。也就是说,在任何使用父类的地方,都应该能够使用子类来替代,而且程序不应该出现任何错误或异常。

里氏替换原则和多态的区别:

1)定义不同:

多态是面向对象编程的一大特性,也是面向对象编程语言的一种语法。它是一种代码实现的思路。

里氏替换是一种设计原则,用来指导继承关系中子类该如何设计。

2)作用范围不同:

里氏替换原则适用于继承关系中的父类和子类之间的关系。

多态是面向对象编程的一种基本特性,可应用于所有面向对象编程的语言中。

3)使用目的不同:

里氏替换原则的主要目的是确保使用继承时,派生类可以替换基类,并保证代码的正确性和一致性。

多态的主要目的是增加代码的灵活性和可扩展性,同时减少重复代码。

接口隔离原则

客户端不应该依赖它不需要的接口。也就是说,我们应该将不同的接口拆分成更小的、更具体的接口,从而避免客户端依赖于他们不需要的方法。这样可以降低接口的复杂性,提高系统的可维护性和可扩展性。

接口隔离原则的优点:

1、提高代码的灵活性和可维护性:接口隔离原则要求我们定义精简的接口,这样可以使得代码更加灵活和可维护,因为我们只需要实现我们真正需要的接口即可。

2、提高代码的可测试性:接口隔离原则可以使得代码更加容易进行测试和调试,因为我们可以只测试我们真正需要的接口。

3、降低模块之间的耦合度:当模块之间只依赖于真正需要的接口时,它们之间的耦合度更低,更容易进行组合和修改。

4、提高代码的可复用性:当接口精简清晰时,代码的可复用性也会提高,因为

我们可以更容易地将代码组合到不同的应用场景中。

5、提高代码的安全性:接口隔离原则可以避免一些意外的依赖关系,从而提高

代码的安全性。

接口隔离原则和单一职责原则的区别:

1)单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。

2)单一职责原则主要是约束,它针对的是程序中的实现和细节;接口隔离原则主要是约束接口,主要针对抽象和程序整体框架的构建。

依赖倒置原则

高层模块不应该依赖底层模块,而是应该依赖于抽象。也就是说,我们应该面向接口编程,而不是面向实现编程。

依赖倒置原则的核心思想是:针对抽象编程,而不是针对具体实现编程。这样可以降低模块之间的耦合度,使系统更加灵活、可扩展和易于维护。同时,依赖倒置原则也可以促进面向对象设计的另一个原则——开闭原则的实现,即可以在不修改已有代码的情况下,通过添加新的实现来扩展系统的功能。

依赖倒置原则、依赖注入、控制反转三者的区别与联系

1)依赖倒置原则:是一种通用的软件设计原则,主要用来指导框架层面的设计。

2)控制反转:与依赖倒置有一些相似,它也是一种框架设计常用的模式,但并不是具体的方法。

3)依赖注入:是实现控制反转的一种手段,他是一种具体的编码技巧。

迪米特法则

一个对象应该对其他对象有最少的了解。也就是说,我们应该尽量减少对象之间的依赖关系,使得系统更加灵活、可扩展。

迪米特法则表达的思想:不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。

合成复用原则

合成复用原则是一种面向对象设计中的设计原则,其核心思想是:尽可能使用对象组合和聚合,而不是继承来实现代码复用和灵活性。

在实现代码复用时,通常会考虑使用继承。然而,继承的局限性在于,它将子类于父类紧密耦合在一起,使得继承关系在设计时非常固定且难以修改,同时也增加了代码的复杂性。

相比之下,合成复用原则更加灵活。它通过将功能分解成更小的对象,将这些对象组合在一起来构建更复杂的对象,从而实现代码复用和灵活性。

聚合是指一个对象持有其他对象的引用,这些被持有的对象可以独立存在于整个系统中。

KISS原则

KISS原则是Keep It Simple And Stupid 的缩写,意思是”保持简单和愚蠢“。它是一种设计原则,通常用于软件开发和系统设计中。

KISS原则的核心思想:要尽可能地保持简单,避免过度复杂化和不必要的复杂性。它要求开发者尽可能地使用简单和易于理解地解决方案来解决问题,避免过度设计和过度工程化。


今天关于设计模式概念、分类、设计原则介绍的相关内容就分享到这里!

如果对您有帮助,欢迎点赞+关注,也可以发表您宝贵的评论,和我一起互动!


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表