在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
设计模式的六大原则是什么?分别是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。下面就请大家跟随小编一起来深入理解这六大原则吧!
1、单一职责原则
单一职责原则,简称是SRP。简单解释就是,一个方法尽可能做一件事情,一般来说不应该让一个方法承担多个职责。单一职责原则的定义是:应该有且仅有一个原因引起类的变更。这个设计模式的原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或设计是否优良,但是“职责”跟“变化原因”都是不好度量的,要“因地制宜”。单一职责适用于接口、类,同时也适用于方法,也就是说,一个方法尽可能做一件事情,一般来说不应该让一个方法承担多个职责。
2、里氏替换原则
里氏替换原则,即子类应该能替换掉它的父类。它为良好的继承定义了一个规范,一句简单的定义包含了4层含义:子类必须完全实现父类的方法;子类可以有自己的个性;覆盖或实现父类的方法时输入参数可以被放大;覆写或实现父类的方法时输出结果可以被缩小。即如果父类的一个方法的返回值是一个类型T,子类的相同方法(重载或覆写)的返回值为S,那么里氏替换原则就要求S必须小于等于T,也就是说,要么S和T是同一个类型,要么S是T的子类。
3、依赖倒置原则
这一设计模式的原则是指细节依赖抽象,低层依赖高层。依赖倒置原则的原始定义包含了三层含义:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。这一原则在Java语言中的表现就是:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;接口或抽象类不依赖于实现类;实现类依赖接口或抽象类。
4、接口隔离原则
接口隔离原则讲的是,应该尽量建立单一接口,不要建立臃肿的接口,接口应该尽量细化。接口分离的手段主要有以下两种:委托分离,通过增加一个新的类型来委托客户的请求,隔离客户和接口的直接依赖,但会增加系统开销;多重继承分离,通过接口多继承来实现客户需求。
5、迪米特法则
迪米特法则是指一个类应该对自己需要耦合或调用的类知道得最少。迪米特法则又叫最少知道原则,通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少。一个类公开的public属性或方法越多,修改时涉及的面也就越大,变更引起的风险扩散也就越大。在设计时需要反复衡量,是否可以减少public方法和属性,是否可以修改为private、package-private、protected等访问权限,是否可以加上final关键字等。迪米特法则要求类尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private、package-private、protected等访问权限。
6、开闭原则
开闭原则要求尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来完成变化。开闭原则的定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。一个软件产品只要在生命期内,都会发生变化,既然变化是一个既定的事实,我们应该在设计时尽量适应这些变化,以提高项目的稳定性和灵活性。开闭原则要求尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来完成变化。如何做到开闭原则:抽象、封装。
设计模式的六大原则就讲解到这里了,如果大家对于设计模式还有什么问题,可以在博学谷在线学习相关的视频课程。希望大家都能够有所收获~
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
零基础学习Java很难吗?主要难点在哪里?
相对于大部分传统职业来讲,互联网要更加开放,绝大部分技术岗位都可以通过学习或者培训获得入行的门槛。Java开发在互联网技术岗位招聘中所占的市场份额是有目共睹的。每年都有很多专业的高校毕业生进入Java开发领域,但依旧无法达到市场招聘的需求。因此大量零基础的同学也选择通过学习和培训进入Java开发这个高薪岗位。那零基础学习Java难吗?主要难点在哪里呢?
5245
2019-10-31 18:40:13
Java并发编程原理解析教程
众所周知,Java并发编程是每一个Java学习者提升自我能力的一个重要学习阶段。在各大知名互联网行业中,Java并发编程都是从业者必须掌握的知识和技能,因此学习Java并发编程的重要性不言而喻。为了解决大家在自学道路上的阻碍,博学谷特地推出了Java并发编程原理解析课程。本文就来为大家详细介绍一下该课程的具体内容,下面就一起来看看吧!
4889
2019-11-04 12:53:15
Java方法语句集合零基础入门
Java开发中的方法学习,首先从方法概述开始,逐步深入学习方法的定义和调用、带参数方法的定义和调用、带返回值方法的定义和调用、方法注意事项、方法重载、方法的参数传递等的知识点。
5526
2019-12-04 10:56:34
Java学多久可以自己做游戏?开发大型游戏?
掌握图片、绘制、事件做游戏相关的知识点就可以用Java做小游戏了,但大型游戏基本没有用Java做开发的,不少人都说Java不适合做游戏。Java 在游戏方面没有形成完善的生态,一般是Unity 开发的对标游戏引擎,Unity3D不支持Java,Unreal3D也不支持Java。
7647
2020-09-17 10:46:22
Java工程师避免内卷,看这篇就够了!
大家可能也都感觉到Java程序员也越来越来卷了,特别是初中级Java工程师更卷了;大家都有着类似的工作经历,你会的技术我也会。所以,如何破解这种职业瓶颈? 那就看谁更能卷了,谁能更快的学习,快速进入到高级、甚至架构师的行列,谁就能拥有话语权,在Java这个方向立稳脚跟。
2125
2022-09-16 10:44:41