设计模式的原则

设计模式的七大原则:

  1. 单一职能原则
  • 定义:一个类只有一个引起发生变化的原因,即一个类只负责一个单一的职能。
  • 举例:创建人员后,除了要保存到数据库,还要发送欢迎邮件,如果我们把保存到数据库和发送欢迎邮件都写在User类里面就违反了单一职能原则,User类只作为数据载体,保存数据库放到UserRepository里面,发送邮件放到EmailService里面
  1. 开闭原则
  • 定义:对修改关闭,对扩展开放。当需求发生变更时,我们应该通过添加新代码来扩展功能,而不是在原有已稳定的代码上去做修改,
  • 举例:有一个计算面积的功能,对于圆形、正方形、菱形 在一个方法里面通过if else的方式给出不同的处理逻辑是不合适的,而是应该通过接口或者抽象类的方式,定义不同的实现类,在实现类里面实现不同的业务处理逻辑。
  1. 里氏替换原则
  • 定义:子类对象必须能替换掉所有的父类对象,而不能改变父类的行为。子类不能外破坏父类的逻辑契约
  • 举例:经典的正方形不是长方形问题,如果长方形是父类,并且提供了设置长宽的方法,也提供了面积 = 长*宽的方法。如果我们正方形继承了长方形类,并且重写了设置长宽的方法,设置长或者设置宽的时候,都分别给宽和长设置成同一个值,那么原来父类的行为就被破坏。
  1. 接口隔离原则
  • 定义:客户端对另一个类的依赖应该控制在最小粒度上。避免实现类被迫实现它们不需要的方法,防止出现胖接口。
  • 举例:有一个接口Human,提供了工作、吃饭、洗澡等方法,有一个Robin类,实现了Human接口,那么Robin类就不得不实现他们不需要的吃饭和洗澡这类无用的方法。
  1. 依赖倒置原则
  • 定义:上层业务模块不应该直接依赖底层的实现,双方应该都通过接口或者抽象的方式调用,面向接口编程而不是面向实现编程。
  • 举例:*Repository 应该依赖DataSource。而不是MysqlDataSouerce。
  1. 最少知道原则
  • 定义:一个对象应该减少对其他对象的了解,只关注和自身有直接关系的对象,
  • 举例:不要使用链式调用过深,比如:A.getB().getC().doSomething();
  1. 组合复用原则
  • 定义:尽量使用组合的方式来达到复用的目的,而不是通过继承的方式来实现。
  • 举例:我们想要在Repository里面来打印日志,我们应该把日志Logger注入到我们目标类里面去,而不是使我们的Repository extend Logger.
相关推荐
kyriewen1116 分钟前
你的前端滤镜慢得像PPT?用Rust+WebAssembly,一秒处理4K图
开发语言·前端·javascript·设计模式·rust·ecmascript·powerpoint
混迹中的咸鱼17 分钟前
C++ 23种设计模式
设计模式·c++23
咖啡八杯42 分钟前
GoF设计模式——工厂方法模式
java·后端·设计模式
ximu_polaris12 小时前
设计模式(C++)-行为型模式-中介者模式
c++·设计模式·中介者模式
诙_19 小时前
深入理解C++设计模式
c++·设计模式
AI大法师21 小时前
从门头到社媒预热图,快闪项目如何统一视觉输出
大数据·人工智能·设计模式
Pkmer1 天前
类的封装性: 让门面设计模式来打开这扇门
后端·设计模式
Pkmer1 天前
古法编程: 我要的是状态模式,策略模式不要误我大计
后端·设计模式
雪度娃娃1 天前
创建型设计模式——建造者模式
c++·microsoft·设计模式·建造者模式
老衲提灯找美女1 天前
多线程(2)-设计模式:单列模式
设计模式