java常用设计模式以及场景使用及代码实现-系列
创始人
2025-05-28 12:26:53

背景

设计模式在面试中总是不能很好的回答出来,所以开一个专题,将每一个设计模式都深挖剖析,理解透彻。持续更新,欢迎讨论指点。

定义

设计模式(design pattern)是对软件设计中普遍存在的各种问题,所提出的解决方案。设计模式并不是固定的一套代码,而是针对某一特定问题的具体解决思路与方案。可以认为是一种最佳实践,因为他是无数软件开发人员经过长时间的实践总结出来的。

六大原则

1、开闭原则(Open Close Principle)

即:对扩展开放,对修改关闭

也就是如果在原有系统里面想要拓展一个类型的时候,不去修改原有代码,易于维护和升级

ps:商场支付支持微信、支付宝。现在想要增加一个银联支付,不是去在原有代码里面增加if..else分支,而是通过创建一个新的类(银联支付类)进行管理。当然,原有的微信、支付宝肯定也不是通过if..else进行实现的。

2、里氏代换原则(Liskov Substitution Principle)

即:如果将一个父类在程序中替换成他的子类,该程序不会发生异常.

也就是子类可以扩展父类的功能,但是不能改变父类原有的功能(尽量不要重写父类方法),优点代码重用、属性共享。缺点:耦合度相对较高,如果父类一个字段的类型改变,则需要考虑子类使用该字段的场景中是否需要处理,可能会造成大量的代码重构。

3、依赖倒转原则(Dependence Inversion Principle)

即:依赖抽象(接口)而不是依赖细节(实现类)

也就是面向接口开发,类与类之间减少直接依赖,而是通过接口和实现类进行关联。

ps:用户需要通过短信发送通知,如果用户类直接操作短信类,则在新加一个微信的时候就需要再次修改用户类。而如果用户是调用一个接口进行操作短信,则我们可以直接在接口中增加微信通道,同时这个接口也可以供其他类进行调用。

4、接口隔离原则(Interface Segregation Principle)

即:使用多个隔离的接口,比使用单个接口要好

降低类之间的耦合度,降低依赖

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

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

6、合成复用原则(Composite Reuse Principle)

即:要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现

它与里氏替换原则并不冲突,相辅相成,都是开闭原则的具体体现。也就是A类想要使用B类的熟悉,可以将B类作为A类的属性,这样B类中如果有字段类型等需要修改的时候,会比里氏替换原则带来的影响更小。

设计模式分类

设计模式分为三种类型,共23种。

创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。

结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。

相关内容

热门资讯

leetcode每日一题:45... 系列:贪心算法 语言:java 题目来源:Leetcode...
差速器工作原理是什么(差速器工... 本篇文章极速百科给大家谈谈差速器工作原理是什么,以及差速器工作原理是什么意思对应的知识点,希望对各位...
幸福花园纤细的爱故事内容是什么... 幸福花园纤细的爱故事内容是什么 目录幸福花园纤细的爱故事内容是什么 幸福花园有几部求幸福花园的第二个...
hisuite是什么 ,HiS... hisuite是什么 目录hisuite是什么 HiSuite什么意思?honest是什么意思“hi...
烈火战车刘德华骑的摩托是什么车... 本篇文章极速百科给大家谈谈烈火战车刘德华骑的摩托是什么车是P3还是P4,以及烈火战车中刘德华骑的是什...
Linux命令·diff diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是...
2021蓝桥杯真题公约数(填空... 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果...
智能马桶杀菌以及光传感方案 智能马桶杀菌模组,安装在马桶改版底部,实现座垫区域消毒、池内消毒、臀洗喷...
腿玩年是什么意思 ,腿玩年是什... 腿玩年是什么意思 目录腿玩年是什么意思 腿玩年是什么意思玩年腿什么意思啊?腿可玩年是什么意思腿玩年是...
校园yy小说,求校园YY小说 ... 校园yy小说目录校园yy小说求校园YY小说有什么好看的校园YY小说校园yy小说 求校园YY小说校园狂...
骏派D60和宝骏510哪个好?... 今天给各位分享骏派D60和宝骏510哪个好?的知识,其中也会对骏派和宝骏哪个质量好进行解释,如果能碰...
黄河两大支流(黄河两大支流位置... 今天给各位分享黄河两大支流的知识,其中也会对黄河两大支流位置进行解释,如果能碰巧解决你现在面临的问题...
Android Listvie... 上一篇文章中我们讲了Android Listview SimpleAdapter的使用完整示例&#x...
linux下实现RS485驱动... 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮...
GoLang string与s... 这篇文章主要介绍了GoLang string与strings.Builder使用对比,...
爱的创可贴大结局 ,爱的创可贴... 爱的创可贴大结局 目录爱的创可贴大结局 爱的创可贴第几集在一起爱的创可贴结局是什么?电视剧爱的创可贴...
爱在春天结局是什么 ,爱在春天... 爱在春天结局是什么 目录爱在春天结局是什么 爱在春天结局是什么爱在春天大结局爱在春天大结局爱在春天结...
数据挖掘(2.3)--数据预处... 目录 三、数据集成和转换 1.数据集成  2.数据冗余性  2.1 皮尔森相关系数 2.2卡方检验 ...
怎么做水印 ,身份证水印怎么做... 怎么做水印 目录怎么做水印 身份证水印怎么做?ps怎么做水印怎么做水印 2. 设计水印:在设计水印时...
夫妻那些事的演员 ,夫妻那些事... 夫妻那些事的演员 目录夫妻那些事的演员 夫妻那些事主演是谁夫妻那些事演员表夫妻那些事演员表介绍夫妻那...
钉钉,下沉进农田 在这个古老的产业里,数字化没有被放到更高的位置,但难点依旧存在。钉钉恰是...
2023年全国最新二级建造师精... 百分百题库提供二级建造师考试试题、二建考试预测题、二级建造师考试真题、二建证考试题库等,...
点金胜手结局 ,点金胜手结局 ... 点金胜手结局 目录点金胜手结局 点金胜手结局点金胜手30黄宗泽最后跟谁在一起点金胜手大结局点金胜手结...
天苍苍野茫茫是什么歌 ,天苍苍... 天苍苍野茫茫是什么歌 目录天苍苍,野茫茫这句歌词的歌名是什么?天苍苍野茫茫风吹草低见牛羊是哪里的民歌...
未来日记漫画结局,《未来日记》... 未来日记漫画结局目录未来日记漫画结局《未来日记》结局是什么?漫画《未来日记》最后的结局是什么样的?未...
投名状讲的是什么 ,投名状说的... 投名状讲的是什么 目录投名状讲的是什么 投名状说的是什么事情投名状这个电影到底表达了个什么意思投名状...
《Spring Boot 趣味... 牛刀小试——五分钟入门 Spring Boot 万物皆可 Hello World 创建一个 Web ...
硬核~ 阿里人都在内卷的Spr... 前言 这份SpringBoot实战文档,结合典型业务场景,全面介绍基于S...
新娘印度电视剧大结局 ,印度电... 新娘印度电视剧大结局 目录新娘印度电视剧大结局 印度电视剧新娘的最后结局是什么?大结局的印度剧《新娘...
当婆婆遇上妈结局 ,《婆婆遇上... 当婆婆遇上妈结局 目录当婆婆遇上妈结局 《婆婆遇上的妈》电视剧结局是什么?《当婆婆遇上妈》的结局是啥...