java对象的六大原则
对象的六大原则:
1.单一职责原则(Single Responsibility Principle SRP)
2.开闭原则(Open Close Principle OCP)
3.里氏替换原则(Liskov Substitution Principle LSP)
4.依赖倒转原则(Dependence Inversion Principle DIP)
5. 接口隔离原则(Interface Segregation Principle ISP)
6.迪米特原则 (Least Knowledge Principle LKP)
单一职责原则:
就一个类而言,应该仅有一个引起它变化的原因,简而言之:一个类应该是一组相关性很高的函数、数据的封装。
一个类尽量只有一个职责(相关),两个完全不一样的功能就不应该放在一个类中,通过不断审视自己的代码,根据具体的业务,功能对类进行相应的拆分。
开闭原则:
软件中的对象(类、模块、函数等)应该对于扩展开放,对于修改是封闭的。
程序一旦开发完成,程序中的一个类的实现只因错误而被修改,新的或者改变的特性应该通过新建不同的类来实现,新建的类可以通过继承的方式来重用原类的代码。
eg:抽象为接口,对于扩展,新增类来实现。
里氏替换原则:
1.如果对每一个类型为S的对象O1,都有类型为T的对象O2,是的以T定义的所有程序P在所有的独享O1都换成O2,程序P的行为没有发生变化,那么类型S是类型T的子类型。
2.所有引用积累的地方必须能透明地使用其子类的对象。
面向对象语言的三大特点:数据抽象(封装)、继承、多态
里氏替换原则依赖于继承、多态。通俗来说:只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或者异常,但反过来就未必能行,有子类出现的地方,父类未必就能适应。将父类使用的地方替换为子类,事项多态。这就是里氏替换原则。
依赖倒转原则:
指代一种特定的解耦形式,使高层次的模块不依赖于低层次的模块的实现细节的目的。
1.高层模块不应该依赖底层模块,两者都应该依赖其抽象。
2.抽象不应该依赖细节。
3.细节应该依赖抽象。
抽象:指接口或者抽象类
细节:实现类,实现接口或者继承抽象类而产生的类就是细节,特点:可以直接被实例化
也就是说,模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类来实现,依赖抽象而不依赖具体实现,这就是依赖倒转原则。
接口隔离原则:
顾名思义,在设计类时,我们需要将各种接口隔离,使用最少的接口,类间的依赖关系应该建立在最小的接口上。他的目的就是:系统解开耦合,从而容易重构,更改和重新部署。
迪米特原则:
一个对象应该对其他对象有最少了解,这个原则的提出也是为了降低耦合度的,便于整个系统维护,升级等等。
类与类之间的关系越密切,耦合度越大,一个类发生改变时,对另一个类的影响也就越大, Only Talk To Your Immedate Friends 只于直接的朋友通信。
其实这六大原则,总的来说,目的都是一样:降低耦合性,便于维护,扩展。
当然,我们在编程的时候不能老是想着这六大原则,从而限制了我们的思维。需要通过大量实践让我们来把这六大原则融会贯通。
java对象的六大原则的更多相关文章
- Java 设计模式(二)-六大原则
		
Java 设计模式(二)-六大原则 单一职责原则(Single Responsibility Principle) 定义: 不要存在多余一个原因导致类变更,既一个类只负责一项职责. 问题由来: 当类A ...
 - JAVA面向对象-----java面向对象的六大原则
		
现在编程的主流语言基本上都是面向对象的.如C#,C++,JAVA.我们在使用时,已经构造了一个个的类.但是往往由于我们在类内部或外部的设计上存在种 种问题,导致尽管是面向对象的语言,却是面向过程的逻辑 ...
 - PHP 设计模式六大原则
		
http://www.cnblogs.com/yujon/p/5536118.html 设计模式六大原则(1):单一职责原则 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责 设计模 ...
 - Java设计模式面试题 01 - 六大原则
		
Java设计模式面试题 01 - 六大原则 1. 单一职责原则 Single Responsibility Principle SRP原则 分清职责,接口一定要做到单一职责,方法也要做到,类尽量做到 ...
 - java设计模式(一)【六大原则】
		
开发一个系统并不是一件困难的事,但是为何维护好一个系统却是一件让人头疼不以的事? 在笔者的观念中这一切都源自于需求. 如果在软件开发完成之后,需求就不再改变,那大部分程序都不需要维护了.但是, ...
 - Java设计模式六大原则-2
		
Java设计模式六大原则-2 做Java程序开发的每天都在使用JDK,Spring,SpringMvc,Mybatis,Netty,MINA等框架,但很少有人懂得背后的原理.即使打开跟下原码也是一头雾 ...
 - Java设计模式六大原则-1
		
Java设计模式六大原则-1 做Java程序开发的每天都在使用JDK,Spring,SpringMvc,Mybatis,Netty,MINA等框架,但很少有人懂得背后的原理.即使打开跟下原码也是一头雾 ...
 - Java基础学习总结(84)——Java面向对象六大原则和设计模式
		
面向对象六大原则 在此之前,有一点需要大家知道,熟悉这些原则并不是说你写出的程序就一定灵活.清晰,只是为你优秀的代码之路铺上了一层栅栏,在这些原则的指导下,你才能避免陷入一些常见的代码泥沼,从而让你写 ...
 - 1、Java基础:面向对象六大原则
		
本文主要介绍了面向对象六大原则. 单一职责原则(Single-Resposibility Principle). “对一个类而言,应该仅有一个引起它变化的原因.”本原则是我们非常熟悉地”高内聚性原则” ...
 
随机推荐
- cat集成项目所遇到的一些坑
			
第一个问题:(jar包依赖冲突) 启动报错,直接贴log zhengxin-third-shanghai-cis [2017-08-21 14:17:49] 56231 WARN [main] - A ...
 - ssh隐藏的sftp功能的使用
			
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH ...
 - InnoDB逻辑存储结构
			
从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace).表空间又由段(segment).区(extent).页(page)组成.页在一些文档中 ...
 - IntelliJ IDEA快捷键:Ctrl+空格
			
The Code Completion feature lets you quickly complete different kinds of statements in the code.For ...
 - 【LOJ】#6436. 「PKUSC2018」神仙的游戏
			
题解 感觉智商为0啊QAQ 显然对于一个长度为\(len\)的border,每个点同余\(n - len\)的部分必然相等 那么我们求一个\(f[a]\)数组,如果存在\(s[x] = 0\)且\(s ...
 - 【BZOJ】4380: [POI2015]Myjnie
			
题解 区间dp,先离散化所有价值 \(f[i][j][k]\)表示\([i,j]\)区间里最小值为\(k\)的价值最大是多少 只考虑\(i <= a <= b <= j\)的区间,枚 ...
 - AIM Tech Round 4 (Div. 1) C - Upgrading Tree 构造 + 树的重心
			
C - Upgrading Tree 我发现我构造题好弱啊啊啊. 很明显能想到先找到重心, 然后我们的目标就是把所有点接到重心的儿子上,让重心的儿子子树变成菊花图, 这个先把重心到儿子的边连到 i , ...
 - Linux性能优化之内存优化(二)
			
前言 不知道大家看完前面一章关于CPU优化,是否受到相应的启发呢?如果遇到任何问题,可以留言和一起探讨这方面的问题.接下来我们介绍一些关于内存方面的知识.内存管理软件包括虚拟内存系统.地址转换.交换. ...
 - 前馈神经网络练习:使用tensorflow进行葡萄酒种类识别
			
数据处理 样本数据描述 样本数据集是double类型的178 * 14矩阵,第一列表示酒所属类别,后面13列分别表示当前样本的13个属性: 1) Alcohol 2) Malic acid 3) As ...
 - 把.html转换成.jsp中jqplot画图表不能正常显示,出错的心得
			
在做这个的时候,明明html中是完全可行的,如下图: 但后缀名改成.jsp后竟出现如下情况: 这太坑爹了吧,我的图呢! 哎,又要自己找代码问题了,无奈! 先给出我还没修改前的代码吧,关于里面的.js, ...