设计模式的原则

设计模式的七大原则:

  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 小时前
GoF设计模式——迭代器模式
java·后端·设计模式·迭代器模式
ttod_qzstudio7 小时前
【软考设计模式】外观模式:复杂子系统的“门面“封装与代码填空精讲
设计模式·外观模式
geovindu13 小时前
CSharp: Prototype Pattern
开发语言·后端·设计模式·.net·原型模式·创建型模式
ttod_qzstudio13 小时前
【软考设计模式】组合模式:“部分-整体“层次结构与树形对象统一操作精讲
设计模式·组合模式
ttod_qzstudio15 小时前
【软考设计模式】装饰模式:“套娃“式增强与动态职责扩展精讲
设计模式·装饰模式
烬羽17 小时前
MCP 多服务器架构实战:一个 Agent 同时操控地图、浏览器和文件
设计模式·设计
阿pin19 小时前
Android随笔-常用的设计模式
android·设计模式
儒雅的名20 小时前
GoF设计模式——策略模式
设计模式·bash·策略模式
折哥的程序人生 · 物流技术专研1 天前
第4篇:Lambda 简化策略模式(Java 8+)
java·设计模式·策略模式·函数式编程·lambda·代码简化·扩充系列
jsonbro1 天前
手把手带你实现发布订阅模式
前端·vue.js·设计模式