设计模式的基石

设计模式按照我的理解来说就是将那些优秀代码中的可复用部分抽象出来,让我们这些菜鸟可以模仿抄袭。至于我们为什么要模仿,当然是这些抽象出来的固定模式可以让我们的代码结构清晰,易于扩展,便于理解。

那么这些大神是如何设计出这些优秀的模式的?秘诀就是遵循下列设计原则:

  1. 单一职责(Single Responsibility Principle):专人专事,每个类的角色应该是单一的。这样设计的好处是我们可以像搭积木一样将功能单一的类组合成复杂的类,对于设计维护扩展理解都有很大的好处。
  2. 开闭原则(Open/Close Principle):通俗来说就是在原有代码上进行扩展而不是进行修改。这样可以保证已有逻辑的正常。开闭原则要求我们需要在设计软件的时候就保留扩展接口,这样在升级优化或者增加新功能的时候就可以不用改动旧逻辑了。
  3. 里氏替换(Liskov Substitution Principle):很难记的名字。。。一言蔽之就是抽象类的设计需要包含子类所有的特性。这样后续扩展新子类的时候就不会造成接口不适配的问题。
  4. 接口隔离(Interface Segregation Principle):抽象类的设计需要尽可能的小,这样有两个好处,一个是客户端依赖减少,另一个是子类的设计可以更加简单。
  5. 依赖倒置(Dependency Inversion Principle):意思就是在写代码的时候尽可能的依赖抽象类,这样便于以后的增加新子类来扩展功能,而且也减少对各种子类实现的依赖。
  6. 迪米特法则(law of Demeter):减少模块之间的依赖来达到松耦合的目的。

上面的五个原则合起来就是Solid原则,加上第六个就是我们在写代码时需要考虑的方向。有法可依,有法必依,才能让我们的代码更加简洁合理易于扩展和维护。不过还是要提醒一下,过犹不及,在理解了设计模式并灵活运用之前切勿过度设计,画虎不成反类犬就搞笑了。后面就让我来介绍一下23种基础的设计模式,以及如何使用C++语言来实现对应模式的案例。

参考:

《秒懂设计模式》

《》

相关推荐
京师20万禁军教头6 分钟前
39面向对象(高级)-设计模式
java·开发语言·设计模式
白山编程大哥37 分钟前
Java 迭代器接口详解:从 Iterator 到 ListIterator 的完整指南
java·开发语言·windows
见叶之秋41 分钟前
【C++】String类的使用(含模拟实现)
java·开发语言·c++
想吃火锅100541 分钟前
【leetcode】42.接雨水js
开发语言·javascript·ecmascript
wuminyu1 小时前
Linux内核线程调度与虚拟线程调度机制系统级深度剖析
java·linux·c语言·jvm·c++
雪芽蓝域zzs2 小时前
第十六节:递归组件实现无限层级折叠侧边栏菜单
开发语言·javascript·ecmascript
神明不懂浪漫2 小时前
【第二章】库、表、增删改查操作
开发语言·数据库·经验分享·笔记
传奇开心果编程2 小时前
【Rust入门知识点学与练】第11课:HashMap 键值对集合
开发语言·学习·rust
yume_sibai3 小时前
03-Rust 函数式编程特性(闭包 + Iterator + Option/Result + 链式调用)
开发语言·后端·rust
xxwxx__3 小时前
深入理解 C++ 继承:从基础语法到底层原理全解析
c++