Java设计模式
一、设计原则的核心思想找出应用中可能需要变化之处,将其独立出来,无需与那些不需要变化的代码混在一起针对接口编程,而不是针对实现编程为了降低耦合二、七大设计原则
1.单一职责原则SRP(Single Responsibility Principle)
单一职责原则表示一个模块的组成元素之间的功能相关性。从软件变化的角度来看,就一个类而言,应该仅有一个让它变化的原因;通俗地说,即一个类只负责一项职责。
2.接口隔离原则ISP(Interface Segregation Principle)
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
3.依赖倒转(倒置)原则DIP(Dependence Inversion Principle)
高层模块不应该依赖低层模块,二者都应该于抽象。进一步说,抽象不应该依赖于细节,细节应该依赖于抽象。其核心思想就是面向接口编程。
4.里氏替换原则LSP(Liskov Substitution Principle)
所有引用基类(父类)的地方必须能透明地使用其子类的对象。 通俗的说,子类可以扩展父类功能,但不能改变父类原有功能。核心思想:继承。
5.开闭原则OCP(Open-Closed Principle)
一个软件实体如类、模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。
6.迪米特法则LOD(Law Of Demeter)
一个对象应该对其他对象有最少的了解;又称最少知识原则(Least Knowledge Principle, LKP),其意义在于降低类之间的耦合。
7.组合/聚合复用原则 CARP(Composite/Aggregate Reuse Principle)
要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。
七大设计原则的优缺点
原则
优点
缺点
SRP1 降低了类的复杂度,逻辑比多项职责简单
2 提高了代码的可读性,提高了系统的可维护性
1 逻辑及职责都足够简单的情况下就显得繁琐
ISP
1 接口越细,越灵活,有更好应变性,可维护性
1 接口过细,以造成类接口"膨胀",增加系统的复杂性
DIP1 降低类之间的耦合性
2 提高系统的稳定性
3 降低修改程序造成的风险
4 可以提高代码的可读性和可维护性1 可能使用对象工厂,可以提高代码的可读性和可维护性
2 某些具体类可能是相当稳定的,不会发生变化,为此没有必要进行抽象
LSP1 代码重用,减少创建类的成本
2 易维护易扩展1 破坏封装,具有侵入性,子父类间紧密耦合
2 子类不能改变父类 可能造成子类代码冗余、灵活性降低
OCP
1 可提高系统的可复用性和可维护性
1 容易引起类爆炸
LOD1 降低了类之间的耦合度,提高了模块的相对独立性
2 由于亲合度降低,从而提高了类的可复用率和系统的扩展性
1 过分的使用迪米特原则,会产生大量这样的中介和传递类,导致系统复杂度变大
CARP1 维持了类的封装性。因为成分对象的内部细节是新对象看不见的,所以这种复用又称为"黑箱"复用
2 新旧类之间的耦合度低。这种复用所需的依赖较少,新对象存取成分对象的唯一方法是通过成分对象的接口
3 复用的灵活性高。这种复用可以在运行时动态进行,新对象可以动态地引用与成分对象类型相同的对象
1 需要许多中间类或接口,存在类爆炸风险,降低系统的可读性和可维护性
以上内容参考了网上一些博主的内容进行汇总和总结,如有错误,欢迎大家指正,同时对各位博主特此表示感谢!本文就不一一列出,如有侵权,还请谅解。个人推荐
视频:尚硅谷Java设计模式(图解+框架源码剖析)_哔哩哔哩_bilibili
文章:Java设计模式:23种设计模式全面解析(超级详细)
科学家发现木卫二欧罗巴的海洋中有氧气,可能存在好氧生物在太阳系中有一些小行星的外表是由一层厚厚的冰壳构成的,其中最典型的有土卫二和木卫二这两颗小行星,科学家认为这类冰冻天体的含水量可能远超过地球,而且有证据显示在冰冻外表的下面存在高压
深海,科学家发现第四种相物质并非只有固态液态和气态物质的第四相?把水变成冰块并不稀奇,可要是把类水液体变成像水又像气呢?不知道你见过这样奇妙的物质没,科学家却在深海发现了这样的第四种相。这种奇妙的物质就如同文章开头的描述一般,你很
做什么副业每天能收入100块钱左右?目前还没找到。都是不稳定的。没有形成精确打击力度等我成功了一定再回来回答一下我想静静副业重在坚持,比如头条发文参与头条各种创作活动,抖音平台活动等都可以赚取一定的兼职收入。既想简单
美国一张人皮面具成功骗过中国移动支付人脸识别系统?随着5G时代的到来和物联网的兴起,现在移动互联网成为了社会的主流,而在中国,我们的移动支付无疑是领先全球的,但是对此美国人却深表怀疑,为此,美国人居然制作了一张人皮面具,而且美国人
现代氢能车今年前两个月销量位列全球第一韩联社3月30日消息,据市场调研机构SNEResearch公司30日发布的数据,现代汽车氢能车型今年前两个月的销量位列全球第一。SNEResearch预测,过去三年引领氢能车市场的
官宣第二天,i茅台冲上苹果应用商店免费榜第一贵州茅台方面公布,茅台电商平台i茅台App将于3月31日上线试运行,即日起可下载。在贵州茅台官宣后的第二天,北京青年报记者于3月29日查询苹果AppStore了解到,i茅台App已
断崖式降薪大厂裁员潮,何时是个头?感谢提问扶正人口生育能力才能抑制市场经济萎缩,人口是人类社会经济持续繁荣发展的蛋糕基座。因为,江山就是人民,人民就是江山。人是一切人类社会文明成果与消费财富的初始缔造者和忠实受用者
电动车涨价催生订单转让黄牛,车企提示购买有风险进入2022年,新能源补贴退坡叠加近期动力电池原材料价格飙升原因,新能源汽车价格涨声迭起。特斯拉比亚迪小鹏理想五菱宏光等多款热门车纷纷涨价,一些车型价格涨幅已达3万元以上。涨价催生
淘宝菜鸟驿站代收点就是垃圾淘宝从快递,快递柜一直到菜鸟驿站,菜鸟驿站代收点越走越完蛋,快递柜不如快递现在看来,菜鸟代收点还不如快递柜。菜鸟驿站代收点就像大爷,想送货上门买家要给菜鸟驿站代收点打电话给快递打电
三星89英寸MicroLED电视推迟生产原因不明MicroLED电视,是三星电子拓展高端电视市场的创新利器,前面几代TheWall系列产品的市场表现,让人们有信心看到2022年三星持续推动MicroLED显示技术民用化的成绩,但
C编程技巧向上或向下对齐的方法及原理在编程中经常使用字节对齐来管理分配的内存,需要字节对齐的根本原因在于CPU访问数据的效率和存储空间的使用率问题。例如,一个处理器一次总是从存储器中取出4个字节的数据。如果所有的in