Java--面向对象设计原则

news/2025/1/15 17:32:30/文章来源:https://www.cnblogs.com/yangcurry/p/18404413
衡量软件设计质量(高内聚,低耦合)
  • 可读性

  • 可复用性 (继承,封装)

  • 可扩展性

  • 可维护性 (更好定位bug,日志)

  • 可测试性

单一职责原则(SRP)

不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。
问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。
一句话总结:不能为图代码量少,把牛头马嘴一起往一个类塞

里氏替换原则(LSP)

1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
2.子类中可以增加自己特有的方法。
3.当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
4.当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
一句话总结:尽量不要重写父类的已经实现了的方法,可以用接口等其他方法绕过

依赖倒置原则(DIP)

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
一句话总结:多用抽象的接口来描述相同的动作,降低实现这个动作的人和物之间的耦合度

接口隔离原则(ISP)

客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。
一句话总结:就好比鱼和人两个类,鱼是游泳和腮呼吸两个动作,人是走路和吃饭两个动作,这些动作不能写在一个接口里面,把这四个动作都包含了。要拆成专门对鱼和人的两个接口才行。

迪米特法则(LKP)

迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。
一句话总结:father1<-child1,father2<-child2,father1和father2是的手下, father1尽量通过father2去访问child2, 不要直接在类里面访问child2. 下属怎么能随便去领导家的孩子呢,小心别人说你拐卖

开闭原则(OCP)

一句话总结:尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化

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

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

相关文章

tarjan—算法的神(一)cw

本篇包含 tarjan 求强连通分量、边双连通分量、割点 部分, tarjan 求点双连通分量、桥(割边)在下一篇。伟大的 Robert Tarjan 创造了众多被人们所熟知的算法及数据结构,最著名的如:(本文的)连通性相关的 tarjan 算法,Splay-Tree,Toptree,tarjan 求 lca 等等。 注:有…

【微信小程序反编译】入门1

原创 zkaq - Tobisec 掌控安全EDU一、前言 这几天在跟着师傅一起学习微信小程序的相关知识点,前面的微信小程序的漏洞挖掘蛮简单的,但是到后面需要黑盒测试了,就需要我们对小程序进行一个反编译,进行一个代码审计相关的知识点了。 小程序的反编译相关工具有好几个,下面我给…

代码随想录day55 || 图论5

并查集197 图中是否存在有效路径 var father []int func validPath(n int, edges [][]int, source int, destination int) bool {// 使用并查集算法,涉及到的操作,包括init,find, issample,joinfather = make([]int, n)for i, _ := range father { // initfather[i] = i}…

D45XT120-ASEMI无人机专用D45XT120

D45XT120-ASEMI无人机专用D45XT120编辑:ll D45XT120-ASEMI无人机专用D45XT120 型号:26MT160 品牌:ASEMI 封装:DXT-5 批号:2024+ 现货:50000+ 最大重复峰值反向电压:1200V 最大正向平均整流电流(Vdss):45A 功率(Pd):大功率 芯片个数:5 引脚数量:5 安装方式:直插 类型…

golang中关于死锁的思考与学习

1、Golang中死锁的触发条件 1.1 书上关于死锁的四个必要条件的讲解 发生死锁时,线程永远不能完成,系统资源被阻碍使用,以致于阻止了其他作业开始执行。在讨论处理死锁问题的各种方法之前,我们首先深入讨论一下死锁特点。 必要条件: 如果在一个系统中以下四个条件同时成立,…

ASP.NET 8 AOT 遍历文件夹获取文件名称及时长

朋友下了N多视频记不住文件夹下都有啥了…问批处理怎么导出文件夹下所有文件名及视频时长…批处理导出文件名好弄,获取视频时长真没用过…想到 .net 控制台程序 AOT 发布,不和批处理差不多效果…新建个控制台项目选下使用AOT 首先要获取文件的时长,我们需要用下 TagLibSharp…

公安网络信息体系能力分类

来源:中国电子科学研究院学报,《公安网络信息体系顶层设计》

轮胎充气压力 气压单位换算 All In One

轮胎充气压力 & 气压单位换算 All In One bar / psi 1 bar = 14.5 psi轮胎充气压力 & 气压单位换算 All In Onebar / psi气压单位换算 1 bar = 14.5 psi demos(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblog…

【工具推荐】xxl-jobExploitGUI - xxl-job一键漏洞利用工具+一键getshll

工具介绍 xxl-jobExploitGUI实现了XXL-JOB默认accessToken权限绕过漏洞的单个检测、批量检测、一键反弹shell功能,后续会持续更新优化,添加POC检测等。 下载链接: 链接: https://pan.quark.cn/s/55ed00b1512d使用说明 单个检测批量检测 fofa语句: body="{\"code\…

电动自行车轮胎规格参数图解教程 All In One

电动自行车轮胎规格参数图解教程 All In One电动自行车轮胎规格参数图解教程 All In One电动车轮胎参数单位换算1 in / 1 英寸 => 2.54 cm / 2.54 厘米https://convertlive.com/zh/u/转换/英寸/自/厘米#10 轮胎参数 轮胎尺寸(英寸): 轮毂尺寸(英寸): 10in 轮胎宽度/断面宽度…

首发找大佬定制的 黑神话悟空内置修改器

无敌模式 无伤判定 无限生命 无限法力 无限气力 无限棍势各种几十个功能 选择游戏进程直接起飞 自己打气死了一直过不去 直接找大佬定制一个 不想让兄弟们受气了 不限速链接:https://pan.quark.cn/s/f4f826c88f1d本文来自博客园,作者:Mr小扎仙森,转载请注明原文链接:http…

【工具推荐】TPscan (最新版本) - 一键ThinkPHP漏洞检测getshell

工具介绍 一键ThinkPHP漏洞检测,基于Python3,一键getshell 下载链接: 链接: https://pan.quark.cn/s/ff51139a5ace使用说明看着就真的看着,不学就真的5