软件构造笔记(十四)---PPT第十讲-程序员宅基地

技术标签: java  软件构造笔记  设计模式  

OO设计原则:SOLID

(SRP) The Single Responsibility Principle

SRP–单一责任原则
1.内容:不应有多于1个的原因使得一个类发生变化,即一个类,一个责任
2.举例:
在这里插入图片描述

(OCP) The Open-Closed Principle

OCP–开放-封闭原则
1.对扩展性的开放:
这意味着模块的行为可以被扩展。当应用程序的需求发生变化时,或者满足新应用程序的需求时,我们可以使模块以新的不同的方式运行。
2.对修改的封闭:
但模块自身的代码是不应被修改的,扩展模块行为的一般途径是修改模块的内部实现,如果一个模块不能被修改,那么它通常被认为是具有固定的行为。
3.实现方式:
在这里插入图片描述
第一种:如果有多种类型的Server,那么针对每一种新出现的Server,不得不修改Server类的内部具体实现。不推荐使用
第二种:通过构造一个抽象的Server类:AbstractServer,该抽象类中包含针对所有类型的Server都通用的代码,从而实现了对修改的封闭;当出现新的Server类型时,只需从该抽象类中派生出具体的子类ConcreteServer即可,从而支持了对扩展的开放。
4.举例:
在这里插入图片描述
左边:如果要修改m_type的值,则要修改内部代码实现,破坏对修改的封闭。
右边:如果要修改m_type的值,只需要增加额外的类进行实现就可以,其他无关的类都不做改动,满足OCP原则

(LSP) The Liskov Substitution Principle

LSP–Liskov 替换原则
子类型必须能够替换其基类型,派生类必须能够通过其基类的接口使用,客户端无需了解二者之间的差异

(ISP) The Interface Segregation Principle

ISP–接口隔离原则
1.“ 胖”接口具有很多缺点:不够聚合
胖接口可分解为多个小的接口,不同的接口向不同的客户端提供服务,客户端只访问自己所需要的端口。
在这里插入图片描述
2.举例:
这是一个不好的实现方式,RobotWorker不需要实现eat()方法,但由于接口中包含两个方法,所以都要实现,不满足ISP原则。
在这里插入图片描述
修改方式如下:
将上述两个接口分离,实现类时只实现需要功能的接口即可。
在这里插入图片描述

(DIP) The Dependency Inversion Principle

DIP–依赖转置原则
1.抽象的模块不应依赖于具体的模块,具体应依赖于抽象
举个例子:
下面的实现是通过接口而不是具体类实现的
在这里插入图片描述
2.实现方法:
不推荐的方法:上层client的代码中直接嵌入了对下层具体实现机制的调用
在这里插入图片描述
满足DIP的方法:上层client的代码面向抽象接口编程,隔离对下层具体实现机制的直接接触
在这里插入图片描述
再举个例子:
delegation要通过接口实现,而不是具体子类
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_47411878/article/details/118438673

智能推荐

Vue filters获取data中的数据_vue filters 获取date中的变量_云卷云舒%的博客-程序员宅基地

场景:通过filters中的方法去修改data中的数据时出现报错。补充:filters中的this指的并非vue的实例,在vue的filters中使用this引用data中的数据是无法获取的。那么问题来了:如何在filtres中使用data中的方法?方法一:可以申明全局变量,改变this方法。1.在对应的组件中申明全局变量2.在beforeCreated申明周期中修改this的指向,并在filters中使用。就可以获取data中申明变量方法二:可以直接给filter传递参.._vue filters 获取date中的变量

HP惠普墨盒(817.816)灌墨后计数器清零方法-程序员宅基地

HP惠普墨盒(817.816)灌墨后计数器清零方法1、灌好墨后,用小块透明胶贴住左第二列的第一个点(触点面朝自己,最上为第一点) 装入,自检完成后,可能会提示墨盒出错,再将其拿出.2. 用另一透明胶贴住最右边的3个点装入,再自检, 提示墨盒出错,再将其拿出. (刷816时第二步屏蔽右边第二列第一个触点)3. 将其拿出,撕掉两透明胶,装入.大功告成。。。。惠普其它墨盒计数器破解清零这

leetcode133. 克隆图_必须将给定节点的拷贝作为对克隆图的引用返回。-程序员宅基地

leetcode133. 克隆图给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(Int) 和其邻居的列表(list[Node])。输入:{“KaTeX parse error: Expected '}', got 'EOF' at end of input: …"neighbors":[{"id”:“2”,“neighbors”:[{“KaTeX parse error: Exp..._必须将给定节点的拷贝作为对克隆图的引用返回。

计算机一级字处理加宽3榜,2014计算机一级MSOFFICE文字处理 3-程序员宅基地

1.将考生文件夹下SUCCESS文件夹中的文件ATEND.DOC的属性设置为隐藏。2.将考生文件夹下PAINT文件夹中的文件USER.TXT移动到考生文件夹下JINK文件夹中,并重命名为TALK.TXT。3.在考生文件夹下TJTV文件夹中新建一个名为KUNT的文件夹。4.将考生文件夹下REMOTE文件夹中的文件BBS.FOR复制到考生文件夹下LOCAL文件夹中。5.删除考生文件夹下MAULYH文件..._office一级考试文本效果设置行距

CentOS安装zip unzip命令-程序员宅基地

知道了就很简单了 yum install zip unzip

装服务器显示磁盘脱机,服务器磁盘处于脱机_时间礼堂的博客-程序员宅基地

服务器磁盘处于脱机 内容精选换一换配置目的端或启动目的端时提示“SMS.1311 目的端磁盘个数不够”。在配置目的端服务器过程中,会校验目的端磁盘数量是否和源端一致。当出现该错误时,检查目的端服务器磁盘数量是否少于源端服务器磁盘数量,或目的端服务器中的硬盘有没有人为删除或卸载。您可以参考检查目的端磁盘数量与源端服务器磁盘数量处理该问题。源端Agent启动后,在源端新增或删对于裸金属服务器不需要的磁..._服务器安装server19 显示磁盘不在线

随便推点

使用FFMPEG降低视频分辨率-程序员宅基地

由于最近要将yuv视频下采样,于是使用ffmpeg快速将yuv视频下降分辨率。在此记录ffmpeg的基础使用方法和所遇到的问题:1、下载FFmpeg  可到官网下载:https://www.ffmpeg.org/ 在这推荐一篇博客:https://www.cnblogs.com/liusx0303/p/7572050.html 里面详细的介绍了安装流程。..._ffmpeg缩小分辨率

sjktk-程序员宅基地

下列四项中,不属于数据库特点的是()。 A.数据共享B.数据完整性 C.数据冗余很高D.数据独立性高 C下列描述正确的是()。 A.一个数据库只能包含一个数据表 B.一个数据库可以包含多个数据表 C.一个数据库只能包含两个数据表 D.一个数据表可以包含多个数据库 BMySQL是一种()类型的数据库管理系统。 A.关系模型 B.网状模型 C.实体-关系模型 ...

共筑网络强国_rsac聽2020-程序员宅基地

美丽又暴躁的小编来了,这次我要讲的事很严肃,因为它关乎所有人、关乎所有企业、关乎整个社会、关乎我们的国家(认真脸)。全国网络安全和信息化工作会议于4月20日至21日在北京召开。主席出席会议并发表重要讲话。这一次会议距离2016年4月19日已经过去两年,主席在当年网络安全和信息化工作座谈会上发表的重要讲话是关于网信工作新理念新思想新战略的一次集中阐述,两年来互联网发展日新月异的,实践证明这番话对我国..._rsac聽2020

机器学习 -- 朴素贝叶斯分类与K-means聚类简述_朴素贝叶斯,k-means都是分类算法吗-程序员宅基地

文章目录一、有监督学习方法举例1. 朴素贝叶斯分类二、无监督学习方法举例2. K-means三、 参考资料一、有监督学习方法举例1. 朴素贝叶斯分类  朴素贝叶斯分类是一种十分简单的分类算法,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。  通俗来说,就像我们坐地铁的时候,仅仅通过一些衣着特征我们便能够猜测周围人的工作或者是身份地位,比如一个人西装革履,那么我们猜测他应该是个工薪一族,有人身穿工作服,那我们也可以认_朴素贝叶斯,k-means都是分类算法吗

计算机网络课后习题概略_已知地址块中的一个地址是186.85.130.202/22。试求这个地址块中的最小地址和最大-程序员宅基地

计算机网络-课后习题第一章 概述1-01.计算机网络可以向用户提供哪些服务?服务功能或作用数据传输网络间个计算机之间互相进行信息的传递。资源共享进入网络的用户可以对网络中的数据、软件和硬件实现共享。分布处理功能通过网络可以把一件较大工作分配给网络上多台计算机去完成1-13.客户-服务器方式与P2P对等通信方式的主要区别是什么?有没有相同的地方?客户-服务器方式是最常用的传统方式,客户是服务请求方,服务器是服务提供方,可同时处理多个远地或本地客户的请求。 对_已知地址块中的一个地址是186.85.130.202/22。试求这个地址块中的最小地址和最大

item2vec:协作过滤的项目向量化映射-程序员宅基地

ITEM2VEC:协同过滤中items的向量化表示