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

1、设计模式简介(7大原则,3大类)

设计模式有7个原则:单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成/聚合复用原则、迪米特法则

1.单一职责原则

单一职责原则又称单一功能原则,它规定一个类只有一个职责。如果有多个职责(功能)被设计在一个类中,这个类就违反了单一职责原则。

2.开闭原则

开闭原则规定软件中的对象(类、模块、函数等)对扩展开放,对修改封闭,这意味着一个实体允许在不改变其源代码的前提下改变其行为,该特性在产品化的环境下是特别有价值的,在这种环境下,改变源代码需要经过代码审查、单元测试等过程,以确保产品的使用质量。遵循这个原则的代码在扩展时并不发生改变,因此不需要经历上述过程。

3.里氏代换原则

里氏代换原则是对开闭原则的补充,规定了在任意父类可以出现的地方,子类都一定可以出现。实现开闭原则的关键就是抽象化,父类与子类的继承关系就是抽象化的具体表现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

4.依赖倒转原则

依赖倒转原则指程序要依赖于抽象(Java中的抽象类和接口),而不依赖于具体的实现(Java中的实现类)。简单地说,就是要求对抽象进行编程,不要求对实现进行编程,这就降低了用户与实现模块之间的耦合度。

5.接口隔离原则

接口隔离原则指通过将不同的功能定义在不同的接口中来实现接口的隔离,这样就避免了其他类在依赖该接口(接口上定义的功能)时依赖其不需要的接口,可减少接口之间依赖的冗余性和复杂性。

6.合成/聚合复用原则

合成/聚合复用原则指通过在一个新的对象中引入(注入)已有的对象以达到类的功能复用和扩展的目的。它的设计原则是要尽量使用合成或聚合而不要使用继承来扩展类的功能。

7.迪米特法则

迪米特法则指一个对象尽可能少地与其他对象发生相互作用,即一个对象对其他对象应该有尽可能少的了解或依赖。其核心思想在于降低模块之间的耦合度,提高模块的内聚性。迪米特法则规定每个模块对其他模块都要有尽可能少的了解和依赖,因此很容易使系统模块之间功能独立,这使得各个模块的独立运行变得更简单,同时使得各个模块之间的组合变得更容易。

设计模式按照其功能和使用场景可以分为三大类:创建型模式(Creational Pattern)结构型模式(Structural Pattern)行为型模式(Behavioral Pattern)

1)创建型

        常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。

        不常用的有:原型模式。

2)结构型

        常用的有:代理模式、桥接模式、装饰者模式、适配器模式。

        不常用的有:门面模式、组合模式、享元模式。

3)行为型

        常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。

        不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

http://www.lryc.cn/news/253105.html

相关文章:

  • 华为鲲鹏+银河麒麟V10编译FreeSWITCH1.10.9
  • CFS三层靶机内网渗透
  • 软件分享--智能照片识别分类软件
  • Leetcode—409.最长回文串【简单】
  • 计算机网络入侵检测技术研究
  • 深入学习锁--Synchronized各种使用方法
  • pycharm中绘制一个3D曲线
  • 人工智能_AI服务器安装清华开源_CHATGLM大语言模型_GLM-6B安装部署_人工智能工作笔记0092
  • 用户反馈组件实现(Vue3+ElementPlus)含图片拖拽上传
  • K8S部署nginx并且使用NFS存储数据
  • Homework 3: Higher-Order Functions, Self Reference, Recursion, Tree Recursion
  • (C++)有效三角形的个数--双指针法
  • 11.30BST理解,AVL树操作,定义;快速幂,二分求矩阵幂(未完)
  • 深入理解Java核心技术:Java工程师的实用干货笔记
  • 大学里面转专业介绍
  • MySQL_1. mysql数据库介绍
  • TimeGPT:时间序列预测模型实例
  • 【JavaEE】多线程 (1)
  • linux 应用层同步与互斥机制之条件变量
  • 3.5毫米音频连接器接线方式
  • 智慧农田可视化大数据综合管理平台方案,EasyCVR助力农业高质量发展
  • python超详细基础文件操作【建议收藏】
  • 华为变革进展指数TPM的五​个级别:试点级、推行级、功能级、集成级和世界级
  • vue el-select多选封装及使用
  • 大模型上下文学习(ICL)训练和推理两个阶段31篇论文
  • WordPress(安装比子主题文件)zibll-7.5.1
  • 蓝桥杯 动态规划
  • 【图论】重庆大学图论与应用课程期末复习资料2-各章考点(计算部分)(私人复习资料)
  • 整数和浮点数在内存中的存储​(大小端详解)
  • SpringBoot 集成 ChatGPT,实战附源码