设计模式的原则

设计模式的七大原则:

  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.
相关推荐
君主黑暗5 小时前
设计模式-抽象工厂模式
设计模式·抽象工厂模式
寰宇的行者5 小时前
设计模式:单例模式
单例模式·设计模式
zjjsctcdl6 小时前
Spring Boot 经典九设计模式全览
java·spring boot·设计模式
君主黑暗6 小时前
设计模式-建造者模式
设计模式·建造者模式
bmseven6 小时前
23种设计模式 - 原型模式(Prototype)
设计模式·原型模式
皙然6 小时前
深度解析 “池化思想”:从设计模式到 Java 技术栈的落地与实践
java·开发语言·设计模式
技术人生黄勇7 小时前
Google 开源实战指南:21种AI智能体设计模式,覆盖从基础到安全的完整体系
人工智能·设计模式
Yu_Lijing7 小时前
基于C++的《Head First设计模式》笔记——解释器模式
c++·设计模式·解释器模式
bmseven7 小时前
23种设计模式 - 建造者模式(Builder)
设计模式·建造者模式