在线客服
扫描二维码
下载博学谷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基础 "=="和 equals 方法究竟有什么区别?
Java基础 "=="和 equals 方法究竟有什么区别?==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
8578
2019-05-23 11:31:26
Java并发编程原理解析教程
众所周知,Java并发编程是每一个Java学习者提升自我能力的一个重要学习阶段。在各大知名互联网行业中,Java并发编程都是从业者必须掌握的知识和技能,因此学习Java并发编程的重要性不言而喻。为了解决大家在自学道路上的阻碍,博学谷特地推出了Java并发编程原理解析课程。本文就来为大家详细介绍一下该课程的具体内容,下面就一起来看看吧!
5039
2019-11-04 12:53:15
MySQL数据库高级应用需要掌握哪些知识点?
MySQL数据库高级应用需要学习解了MySQL中的视图/存储过程/触发器/索引等对象的使用、常见的SQL优化的技巧、MySQL Server优化、应用优化、查询缓存优化、MySQL锁、数据库常用工具、复制和日志等方面的知识。
4795
2020-01-06 17:40:16
Java语言发展史及发展前景分析
Java语言发展史及发展前景分析,Java面向对象编程语言出生于1995年5月,Java功能强大和简单易用,应用领域非常广泛。Java语言具有安全、可靠等优势,且属于分布式、多线程和面向对象语言,对于这方面的人才需求量很大。
6466
2020-08-03 15:31:48
初级Java程序员需要掌握什么知识?
初级Java程序员需要掌握基本语法、集合框架、设计模式、多线程和并发、IO、JVM、框架、数据库、web开发、数据结构和算法等知识,初级程序员要学会解决问题的思路,先要学会调试代码,查出具体哪行代码出问题,找到解决办法。
4822
2020-12-15 10:51:25