设计模式:六大原则 ③

一、六大设计原则

🍠 开闭原则 (Open Close Principle)

        💌 对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,需要使用接口和抽象类。

🍠 里氏代换原则 (Liskov Substitution Principle)

        💌 面向对象设计的基本原则之一。任何基类可以出现的地方,子类一定可以出现。里氏代换原则是对开闭原则的补充,实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

🍠 依赖倒转原则 (Dependence lnversion Principle)

        💌 开闭原则的基础,针对接口编程,依赖于抽象而不依赖于具体,即依赖接口而不是实体类。

🍠 接口隔离原则 (lnterface Segregation Principle)

        💌 使用多个隔离的接口,比使用单个接口要好,降低类之间的耦合度,一个功能一个接口。设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。

🍠 最少知道原则 迪米特法则 (Demeter Principle)

        💌 一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

🍠 合成复用原则 (Composite Reuse Principle)

        💌 尽量使用合成/聚合的方式,而不是使用继承。通过将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象的功能,从而达到复用。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/430821.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

证明高维度神经网络模型是低纬度神经网络模型的加和

神经网络中矩阵乘法的分解与应用 启发标题:神经网络中矩阵乘法的分解与应用摘要:引言:方法:实验:结论:参考文献:附录1附录2实验数据 启发 理论上 更具矩阵乘法 A[p,mn]B[mn,q]C[p,q] Acat(A[:,…

3分钟开通GPT-4

AI从前年12月份到现在已经伴随我们一年多了,还有很多小伙伴不会开通,其实开通很简单,环境需要自己搞定,升级的话就需要一张visa卡,办理visa卡就可以直接升级chatgptPLSU 一、虚拟卡支付 这种方式的优点是操作简单&…

离散系统的频率响应

离散系统的频率响应 方法一:利用 freqz() 方法一:利用\textbf{freqz()} 方法一:利用freqz() 方法二:利用自定义 freqz_m() 方法二:利用自定义\textbf{freqz\_m()} 方法二:利用自定义freqz_m() 方法一&#…

JimuReport积木报表 v1.7.1 版本发布,低代码报表工具

项目介绍 一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报…

游戏引擎渲染流程

一、渲染概述 我们首先看到渲染技术的发展 游戏渲染面临的挑战: 一个容器中同一时刻有大量的游戏对象需要进行渲染,并且不同对象渲染的形式、算法还有所差异,这些使得游戏的绘制系统变得非常复杂;其次,游戏引擎的渲染…

win11下安装mysql

一、下载MySQL 官方下载传送门 我安装的版本是5.7.83 二、安装MySQL 1.双击安装包 2.选择Custom(自定义安装),然后Next> 3.根据你的系统做选择,我的是64位,所选MySQL Servers 5.7.38 -x64,然后按箭头将选中的版本移到右边…

如何根据企业司法涉诉大数据合理规避风险?

在当前的商业环境中,企业司法涉诉的信息越来越成为衡量一家企业信誉和运营风险的重要标准。大数据时代的到来,让我们有了更加丰富的手段对这些信息进行挖掘与分析,从而对企业可能面临的风险进行预警。本文将探讨如何通过对企业司法涉诉的大数…

Android9-W517-使用NotificationListenerService监听通知

目录 一、前言 二、前提 三、方案 方案一 方案二 方案三 方案四 方案五 方案六 方案七 关于NotificationListenerService类头注释 四、结论 一、前言 NotificationListenerService可以让应用监听所有通知,但是无法获得监听通知的权限,如下六种…

JavaWeb JSP

JSP(Java Server Page)是J2EE的功能模块,是Java服务器页面,由Web服务器执行,作用就是降低动态网页开发难度,将Java代码与HTML分离,降低开发难度,本质就是Servlet。 Servlet的缺点&a…

元素水平垂直居中的方法有哪些?

文章目录 css 实现垂直水平居中实现方式利用定位margin:auto利用定位margin:负值利用定位transformtable布局flex布局grid网格布局小结有需要的请私信博主,还请麻烦给个关注,博主不定期更新组件封装和文章编写,或许能够…

ffmpeg使用vaapi解码后的视频如何基于x11或EGL实现0-copy渲染?

技术背景 对于ffmpeg硬解码后渲染常见的做法是解码后通过av_hwframe_transfer_data方法将数据从GPU拷贝到CPU,然后做一些转换处理用opengl渲染,必然涉及到譬如类似glTexImage2D的函数将数据上传到GPU。而这样2次copy就会导致CPU的使用率变高&#xff0c…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:外描边设置)

设置组件外描边样式。 说明: 从API Version 11开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 outline outline(value: OutlineOptions) 统一外描边样式设置接口。 卡片能力: 从API version 11开始,该…

【题解】—— LeetCode一周小结9

【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结8 26.二叉搜索树的范围和 题目链接:938. 二叉搜索树的范围和 给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。 示例 1: 输…

Stable Diffusion——Animate Diff一键AI图像转视频

前言 AnimateDiff 是一个实用框架,可以对文本生成图像模型进行动画处理,无需进行特定模型调整,即可为大多数现有的个性化文本转图像模型提供动画化能力。而Animatediff 已更新至 2.0 版本和3.0两个版本,相较于 1.0 版本&#xff…

MySQL 多表查询 连接查询 自连接

介绍 自连接查询,可以是内连接查询,也可以是外连接查询,一句话自己连接自己,一个表当作两个表进行连接。 语法 SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件两个表A说明是同一张表,但是别名不同 案例…

【ue5】滑铲系统蓝图笔记

大致逻辑如下: 一、导入动画 滑铲蹲待机蹲行走 导入到文件夹中 可以右键设置颜色,便于区分。 二、调整动画 1.启动根运动 启动根运动后,人物才可以位移,不然只能在原地。 打开动画序列,勾选启用根运动Enabled…

好书推荐丨细说PyTorch深度学习:理论、算法、模型与编程实现

文章目录 写在前面深度学习推荐图书内容简介作者简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家推荐一本深度学习的全新正版书籍,感兴趣的小伙伴快来看看吧~ 深度学习 深度学习是机器学习的一个分支,它模仿人脑神经网络的工作原理进行复杂的…

网络协议栈--应用层--HTTPS协议

目录 一、HTTPS协议原理1.1 HTTPS协议是什么?1.2 概念准备1.2.1 什么是“加密”?1.2.2 为什么要加密?1.2.3 常见的加密方式1.2.3.1 对称加密1.2.3.2 非对称加密 1.2.4 数据摘要&&数据指纹1.2.5 数字签名1.2.6 理解链-承上启下 1.3 HT…

掘根宝典之C语言字符串输入函数(gets(),fgets(),get_s())

字符串输入前的注意事项 如果想把一个字符串读入程序,首先必须预留该字符串的空间,然后用输入函数获取该字符串 这意味着必须要为字符串分配足够的空间。 不要指望计算机在读取字符串时顺便计算它的长度,然后再分配空间(计算机不会这样做&a…