在线客服
扫描二维码
下载博学谷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、开闭原则
开闭原则要求尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来完成变化。开闭原则的定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。一个软件产品只要在生命期内,都会发生变化,既然变化是一个既定的事实,我们应该在设计时尽量适应这些变化,以提高项目的稳定性和灵活性。开闭原则要求尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来完成变化。如何做到开闭原则:抽象、封装。
设计模式的六大原则就讲解到这里了,如果大家对于设计模式还有什么问题,可以在博学谷在线学习相关的视频课程。希望大家都能够有所收获~
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
参加JavaEE开发培训班能找到工作吗?
虽然目前JavaEE相应的就业岗位非常多,但是由于互联网技术的高速发展,企业之间的竞争日益明显,因此企业对从业者的要求也越来越高。所以刚刚毕业或者只是通过简单自学JavaEE知识的同学,找工作的时候屡屡碰壁。越来越多的同学认识到通过参加JavaEE开发培训班系统学习知识的重要性。那参加JavaEE开发培训班能找到工作吗?
4484
2019-08-20 17:56:15
Java开发中并发工具类有哪些?如何学习?
并发编程不但能大大提高代码的执行效率,也可以提高用户体验的好感度。Java编程语言中,在JDK的并发包中提供了几个非常实用的并发工具类。其中CountDownL _atch、CyclicBarrier、Semaphore工具类提供了并发编程流程控制的手段,Exchanger工具类则提供了在线线程间的交换数据的手段。下面小编就为大家详细介绍一下这些并发工具类。
4825
2019-11-08 18:42:57
Java并发与线程免费课程推荐
Java并发与线程免费课程推荐,Java开发中涉及线程的基础知识、线程的启动与终止、线程间的互斥处理与协作、线程的应用、线程的数量管理以及性能优化等内容。
3445
2019-12-03 15:07:22
分布式版本控制Git学习教程
Git可以理解为一种完全分布式的版本控制工具,它最大优势就是快速简单,强力支持非线性开发模式。因此,Git凭借着自身的魅力,得到了许多程序员和公司的喜爱。无论你是不是程序员,做不做程序开发,学习分布式版本控制系统Git都是有百利而无一害的。
4495
2020-01-08 19:44:10
Java从零基础到入门需要从哪里开始学?
Java从零基础到入门需要从哪里开始学?Java是一门后端语言,即服务端,服务端代码一般运行在服务器上,通常运行Java程序的服务器都是Linux服务器。需要从Java 基础语法学起,如基本类型变量、for 循环、if else 等,还有Java 常用到的概念,比如面向对象的特性,其中有类、接口等。
2525
2022-03-17 10:39:58