在线客服
扫描二维码
下载博学谷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 web吗?
没有基础可以转行学Java web吗?这个问题很多想入行的同学都会提问!相对于原本大学教育学习过Javaweb知识的同学,转行的同学会有一定劣势,但是这就意味着这部分同学不可以转行吗?答案必然是否定的。下面博学谷老师就为大家分享一下没有基础的情况下如何学习Java web!
9208
2019-08-07 18:11:08
想成为Java架构师需要具备哪些能力?
从事Java开发的朋友都了解,Java开发工程师晋升路径的终点要么是CTO(偏管理的技术高层)、架构师(偏技术的技术高层)。而如果你想成为Java架构师需要具备哪些能力呢?
8378
2019-08-08 14:18:16
Java编程语言开发大数据的优势有哪些?
Java编程语言开发大数据的优势:Java语言支持各类组件、Java在物联网方面应用、Java移动领域应用、Java支撑超级计算机设备。GPU成为大多数速度最快的超级计算设备所不可或缺的处理器。Java“一次编写,随处起效”架构技术能够在工作站上开发自己的软件移植到系统当中。
5017
2020-03-30 17:55:17
从0开始学Java开发要做哪些准备?
很多从0开始学Java开发的初学者,常常在面对一大堆基础语法知识的时候,感到无从下手。其实这也是很正常的现象,毕竟编程的学习门槛虽然很低,但是学起来并不轻松,想要学好更是难上加难。那么,我们应该在学习之前做哪些准备呢?换句话说,作为零基础的初学者,我们应该如何开始Java开发的学习呢?
4981
2020-08-03 11:47:20
Node发展史介绍
如果没有服务器提供支持,没有数据库存储数据,那么我们写的代码只能在自己的电脑本地运行,网站也不能登录注册。而就是为什么要学习Node的原因,因为Node 就是做服务器的。在大家学习Node之前,我们先来看看Node发展史的介绍吧!
5942
2020-08-14 16:26:45
