设计模式8种原则

1. 开放封闭

  • 允许对类进行扩展,但禁止更改。

2. 依赖倒置

  • 高层模块(稳定的)不应该依赖于低层模块(变化的,如子类)。二者都应该依赖于抽象。
  • 抽象不应该依赖于实现,实现应该依赖于抽象。

3. 里氏替换

  • 子类必须能够替换他们的基类(IS-A)
  • 继承表达抽象类型

4. 单一职责原则

  • 一个类应该仅有一个引起它变化的原因
  • 变化的方向隐含着类的责任

5. 接口隔离原则

  • 不应该强迫用户依赖它们不用的接口。
  • 接口应该小而完备

6. 优先使用对象组合,而不是类继承

  • 继承某种程度上破坏了类的封装性。
  • 使用对象组合可以避免这一点。

7. 封装变化点

  • 使用封装来创建对象之间的分层界限。

8. 针对接口编程,而不是针对实现

  • 客户程序只需要知道对象的接口即可,从而降低代码间的耦合。

总结

  • 上述原则所遵循的规则主要就是:
    1. 降低代码耦合度,便于扩展;
    2. 总会有变化和稳定的两种模块;
    3. 当发生需求变化时,往往只需要新增一种子类。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES证书过期替换方案

简介: 在生产环境中,Elasticsearch 集群的证书可能会因为过期而导致集群无法正常工作。为了避免这种情况的发生,我们需要及时更新证书,并保证更新证书的过程中保持 Elasticsearch 集群的高可用性和数据安全性。 集群环境 ES集群版…

【内网穿透】打洞笔记

文章目录 前言原理阐述公网sshfrp转发服务 实现前提第一步:第二步第三步第四步 补充第五步(希望隧道一直开着)sftp传数据(嫌云服务器上的网太慢) 前言 租了一个云服务器,想用vscode的ssh远程连接&#xff…

3.5【C语言】signed和unsigned

其实第3篇 http://t.csdnimg.cn/sdP8f 的数据类型并没有写全 完整版本:short [int],[signed] short [int] ,unsigned short [int];int,[signed] int,unsigned int; long [int],[sin…

C++ LP 开头字符串自定义类型

LPSTR LPCSTR Win32 和 VC 所使用的一种字符串数据类型。 LPCSTR 被定义成是一个指向以’\0’结尾的常量字符的指针。 LPWSTR wchar_t 字符串。 LPCWSTR 是一个指向 unicode 编码字符串的 32 位指针,所指向字符串是 wchar 型,而不是 char 型。 LP…

【前端】表单密码格式—校验。

如图:实现表单输入密码和确认密码的时候进行表单校验。 实现方式: 1.在代码的data里面定义,函数验证的方法。如图所示,代码如下 【代码】如下: const validatePassword (rule, value, callback) > {if (value ) {callback(n…

南京邮电大学统计学课程实验3 用EXCEL进行方差分析 指导

一、实验描述 实验目的 1、学会在计算机上利用EXCEL进行单因素方差分析; 2、学会在计算机上利用EXCEL进行无重复的双因素方差分析。 二、实验环境 实验中使用以下软件和硬件设备 (1)Windows XP操作系统; (2&am…

【启明智显分享】Model3驱动高效农业灌溉:10.1寸电阻触摸屏,RGB50pin高清接口

走出信息茧房,打破刻板印象,科技日新月异的时代,农业已经不再是传统意义上的“面朝黄土背朝天”。在现代农业管理中,科技的应用至关重要,一块高清触摸显示屏能够极大地提升农业劳动效率,实现科学的农田管理…

RTX 50系列显卡功耗信息曝光:5090型号功耗直逼500W,5060增幅显著引热议

随着NVIDIA即将推出的Blackwell RTX 50系列显卡预计在今年年底或明年年初震撼登场,业界对其性能提升的期待已然高涨,尽管AMD显卡可能难以匹敌这一飞跃。然而,在性能跃升的同时,消费者对于显卡功耗是否会进一步攀升的担忧也随之而来…

昇思25天学习打卡营第12天|Vision Transformer图像分类、SSD目标检测

Vision Transformer(ViT)简介 近些年,随着基于自注意(Self-Attention)结构的模型的发展,特别是Transformer模型的提出,极大地促进了自然语言处理模型的发展。由于Transformers的计算效率和可扩…

git 代理错误拒绝连接

git 克隆项目拒绝连接 现象 Failed to connect to 127.0.0.1 port 15732: 拒绝连接 问题描述 代理错误解决方法 取消代理 git config --global --unset http.proxy

Windows安装Nacos【超详细图解】

目录 一、下载 Nacos 二、解压 Nacos 三、编辑配置文件 四、创建数据库 五、启动 Nacos 六、进入控制台 一、下载 Nacos Nacos v2.3.2 官方网址 二、解压 Nacos 三、编辑配置文件 主要修改数据库用户名、密码、鉴权是否开启、key value和token # # Copyright 1999-2021 …

elasticsearch中模板的创建和使用

template是es集群内快速生成批量索引的一种快捷方式。 官方解释: 模板是一种在索引创建时配置索引的方法。 7.x之后ES支持两种模板创建方式,一种是传统的或者叫普通的创建方式,即在一次请求中指定 mappings, settings, and aliases等模板的内…

Template execution failed: ReferenceError: name is not defined

问题 我们使用了html-webpack-plugin(webpack)进行编译html,导致的错误。 排查结果 连接地址 html-webpack-plugin版本低(2.30.1),html模板里面不能有符号,注释都不行 // var reg new RegExp((^|&)${name}([^&…

基于LAMMPS模拟岩石表面润湿性

润湿性是指不相混的两相流体与岩石固相表面接触时,其中一相流体沿着岩石表面铺开的现象,该相称为润湿相。润湿性一般采用接触角法来确定,通常根据水在固体表面的角度θ来定义系统的润湿性,接触角为0~75为水润湿&#x…

40、PHP 实现对称的二叉树(含源码)

题目&#xff1a; PHP 实现对称的二叉树 描述&#xff1a; 请实现一个函数&#xff0c;用来判断一颗二叉树是不是对称的。 注意&#xff0c;如果一个二叉树同此二叉树的镜像是同样的&#xff0c;定义其为对称的。 <?php/*class TreeNode{var $val;var $left NULL;var $r…

WPF项目实战视频《一》(主要为WPF基础知识)

1.WPF布局&#xff1a; Grid&#xff0c;stackPanel&#xff0c;wrapPanel&#xff0c;DockPanel&#xff0c;UniformGrid Grid 按行列布局&#xff0c; Grid.ColumnDefinitions列&#xff0c;Grid.RowDefinitions行 Grid.Row“0” Grid.Column“0” stackPanel 默认从上往下排…

Hadoop3:MR程序压测实验

一、环境要求 内存&#xff1a;128G CPU&#xff1a;32C 磁盘&#xff1a;8T 注&#xff1a;一个虚拟机不超过150G磁盘尽量不要执行这段代码 二、案例 1、需求 使用Sort程序评测MapReduce 2、操作步骤 1、使用RandomWriter来产生随机数&#xff0c;每个节点运行10个Map任…

LabVIEW机器学习实现外观检测

介绍如何利用LabVIEW平台结合机器学习技术实现对被测样品的外观检测。详细说明了硬件选择、算法使用、操作步骤以及注意事项。 硬件选择 工业相机&#xff1a;高分辨率工业相机&#xff08;如Basler、FLIR等&#xff09;用于采集样品的图像。 照明设备&#xff1a;均匀的LED照…

C++ 多态:探索对象的动态行为

C 多态&#xff1a;探索对象的动态行为 在C中&#xff0c;多态性是一种强大的特性&#xff0c;它允许我们通过基类指针或引用来调用派生类的方法。多态性不仅增加了程序的灵活性&#xff0c;还使得代码更加易于扩展和维护。本文将深入探讨C中的多态性&#xff0c;包括静态多态&…

代理高并发如何去解决?

代理高并发问题的解决方法涉及多个层面&#xff0c;包括架构设计、资源优化、技术选型等方面。以下是一些具体的解决方案&#xff1a; 1. 架构设计 分布式架构&#xff1a; 微服务架构&#xff1a;将大型应用拆分为多个小型服务&#xff0c;每个服务独立部署、扩展和升级&…