当前位置: 首页 > ai >正文

设计模式的六大设计原则

一、什么是设计模式

设计模式是一套被反复使用、被多数人知晓的、代码设计经验的总结,它可以让代码更容易理解、提升代码可靠性以及更能够被复用。

二、设计模式的六大原则

单一原则

“应该有且只有一个原因引起类的变更”,通俗来讲,一个类或接口尽可能只做一件事。如此,有以下好处:

  1. 类和接口的复杂性降低,职责明确

  2. 可读性好

  3. 可维护性提高

  4. 变更引起的风险降低,这也使开闭原则更容易实现

开闭原则

“可拓展,不修改(少修改)”

子类替换父类原则(里氏替换原则)

子类对象能够替换程序中父类对象出现的任何地方,并保证原有的逻辑行为及正确性不变。

要满足上面的要求,则需要:

  1. 子类的前置条件不能比父类更严格

  2. 子类的后置条件一定比父类更严格(或相同)

在继承类时,重写父类的所有方法,且子类尽量不要暴露自己的public方法

接口调用原则(迪米特原则)

“一个对象应该对其他对象有尽可能少的了解”。

通俗来讲,在这个原则中,一个对象只应该调用其直接的成员对象、方法参数和返回值中的对象,以及当前对象本身。则是意味着,对象应该尽量减少对其他对象的直接引用,从而降低类之间的耦合度。

接口隔离原则

“客户端不应该被迫依赖于它不使用的接口”。

具体来说,要求将一个大而全的接口拆分为更小、更具体的接口,以确保每个接口只包含客户端实际需要的方法。

同时,不要对外暴露没有实际意义的接口。

接口交互原则(依赖倒置原则)

“高层模块不应该依赖低层模块,二者都应该依赖于抽象”。

包括两个要点:

  1. 高层模块不应依赖于低层模块的细节,而应该依赖于抽象接口

  2. 抽象不应依赖于具体的实现细节,而具体的实现应该依赖于抽象

http://www.xdnf.cn/news/15008.html

相关文章:

  • 《数据库》 MySQL库表操作
  • 判断当前是否为钉钉环境
  • Leetcode力扣解题记录--第42题 接雨水(动规和分治法)
  • C#中异步任务取消:CancellationToken
  • qemu vcpu的创建过程
  • 前缀和|差分
  • Java学习---JVM(1)
  • easyui碰到想要去除顶部栏按钮边框
  • 应用层协议 HTTP
  • Thrust库介绍与使用
  • LangGraph-2-interrupt 流程中断
  • Language Models are Few-Shot Learners: 开箱即用的GPT-3(二)
  • MacOS 终端(Terminal)配置显示日期时间
  • 亚矩阵云手机破解Maio广告平台多账号风控:从“生存焦虑”到“规模化增长”的终极方案
  • OneFileLLM:一键聚合多源信息流
  • AI探索 | 豆包智能助手跟扣子空间(AI办公助手)有什么区别
  • [Meetily后端框架] AI摘要结构化 | `SummaryResponse`模型 | Pydantic库 | vs marshmallow库
  • Qt Creator控件及其用途详细总结
  • CH9121T电路及配置详解
  • AI驱动的业务系统智能化转型:从非结构化到结构化的智能转换
  • 【深度学习新浪潮】什么是持续预训练?
  • 从零开始搭建深度学习大厦系列-2.卷积神经网络基础(5-9)
  • C++类对象多态底层原理及扩展问题
  • Excalidraw:一款轻量、高效、极具手感的在线白板工具
  • 18th Day| 654.最大二叉树, 617.合并二叉树, 700.二叉搜索树中的搜索,98.验证二叉搜索树
  • 微算法科技的前沿探索:量子机器学习算法在视觉任务中的革新应用
  • 虚拟储能与分布式光伏协同优化:新型电力系统的灵活性解决方案
  • Mac自定义右键功能
  • ThinkBook 14s IWL(20RM)OEM系统镜像原厂Win10系统
  • @Schema是什么?