设计模式的基石

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

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

  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++语言来实现对应模式的案例。

参考:

《秒懂设计模式》

《》

相关推荐
破茧蝴蝶2 小时前
Python分布式爬虫完整教程
开发语言·python
狗凯之家源码网2 小时前
全新 PHP 轻量客服聊天室源码深度评测
开发语言·php·聊天室系统
远离UE43 小时前
UE5 Substrate Thin Film 源码拆析
开发语言·javascript·ue5
keyipatience3 小时前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
一拳一个呆瓜3 小时前
【STL】文件系统导航
c++·stl
All for pursuit.3 小时前
【动态规划-21】312.戳气球
数据结构·c++·算法·leetcode·动态规划
栈帧之外4 小时前
【C++】STL之set
开发语言·c++
catchadmin4 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.4.1 发布,新增 MCP 支持
开发语言·php
zhanghaha13145 小时前
C++构造函数的一些其他应用(逐词逐句保姆讲解)
c++
jimy16 小时前
c++的 Type Traits (二、更详细版本)
开发语言·c++