设计模式实战精讲:前传

这对于之前的我看来,设计模式的存在可有可无,也可以这么说,是我对设计模式的认识太少。俗话说的好:前人种树后人乘凉,在计算机这条道路上,无数前辈总结出来的经验还是有用的,为什么我会有如此想法呢?而这其中多多少少与设计模式有着千丝万缕的联系,在我不断的优化代码的过程中,我也意识到了设计模式的重要性,于是便有了这篇文章

作者
WildPointer
发布
2024.05.02
专栏
设计模式实战精讲
阅读
约 2 分钟 / 129 次原文浏览
设计模式实战精讲:前传

前言

什么是设计模式?为什么要学习设计模式?这对于之前的我看来,设计模式的存在可有可无,也可以这么说,是我对设计模式的认识太少。现在的我看来,设计模式是一套反复被人使用,经过实战推敲的代码设计经验的总结。俗话说的好:前人种树后人乘凉,在计算机这条道路上,无数前辈总结出来的经验还是有用的,为什么我会有如此想法呢?原因是在我自己写的项目中,代码自认为总是不够优雅,不够言简意赅,不够直抒胸臆。而这其中多多少少与设计模式有着千丝万缕的联系,在我不断的优化代码的过程中,我也意识到了设计模式的重要性,于是便有了这篇文章。


设计模式的分类

        设计模式细分为三大部分,这三大部分叫创建型模式,结构型模式和行为型模式。下面我将大概讲解这三大部分细分的设计模式:

1.创建型模式

图1.创建型模式区分示意

2.结构性模式

图2.结构型模式区分示意

3.行为型模式

图3.行为型模式区分示意


面向对象的设计原则

1.依赖倒置原则(DIP):

1.高层(稳定)不依赖低层(变化),两者依赖抽象(稳定):高层设计(业务逻辑)应该具有稳定性,不因底层实现的变化而变化

2.抽象(稳定)不依赖细节(变化),细节依赖抽象(稳定):细节实现应该基于稳定的抽象层(模型或框架)进行,而不是抽象层去适应不断变化的细节

2.开放封闭原则(OCP):

1.对扩展开放,对更改封闭:对于新功能应增添新代码实现,对于之前测试过的代码不应该因为需求的变化而更改

2.类模块可扩展, 但不可修改

3.单一职责原则(SRP):

1.一个类应该仅有一个引起它变化的原因

2.变化的方向应隐含类的责任

4.里氏替换原则(LSP):

1.子类必须能够替换它们的基类

2.继承表达类型抽象:使用继承的方式对抽象类型进行实现,对代码进行复用和扩展

5.接口隔离原则(ISP):

1.不应该强迫客户程序依赖他们不用的方法

2.接口应该小而完备

3.一个接口应该只提供一种对外功能

6.优先组合不是继承原则(CARP):

1.类的继承通常是"白箱复用",对象组合通常是"黑箱复用"         

1.白箱复用:一般是指类的继承关系,因为子类可访问父类的受保护以及公有成员,故耦合度高,也称为白箱复用

2.黑箱复用:一般是指类的组合关系,类之间互不打扰,故耦合度底,也称之为黑箱复用

2.继承在一定程序破坏封装性,子类和父类耦合度高

7.迪米特法则(LOD):

1.对象应当对其他对象尽可能少的了解

2.各个模块之间相互调用时,通常会提供一个统一的接口来实现


PS:针对以上设计法则,大概了解即可,难以了解的法则作者已经通过解释来进行通俗的讲解

17次原文点赞;这里的喜欢仅保存在本机
WildPointer

专注系统编程、工程实践与底层技术,记录 C++、Qt、OpenCV 与 VTK 的学习和实践。