对象的六大原则:

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对象的六大原则的更多相关文章

  1. Java 设计模式(二)-六大原则

    Java 设计模式(二)-六大原则 单一职责原则(Single Responsibility Principle) 定义: 不要存在多余一个原因导致类变更,既一个类只负责一项职责. 问题由来: 当类A ...

  2. JAVA面向对象-----java面向对象的六大原则

    现在编程的主流语言基本上都是面向对象的.如C#,C++,JAVA.我们在使用时,已经构造了一个个的类.但是往往由于我们在类内部或外部的设计上存在种 种问题,导致尽管是面向对象的语言,却是面向过程的逻辑 ...

  3. PHP 设计模式六大原则

    http://www.cnblogs.com/yujon/p/5536118.html 设计模式六大原则(1):单一职责原则 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责 设计模 ...

  4. Java设计模式面试题 01 - 六大原则

    Java设计模式面试题 01 - 六大原则 1. 单一职责原则 Single Responsibility Principle SRP原则 分清职责,接口一定要做到单一职责,方法也要做到,类尽量做到 ...

  5. java设计模式(一)【六大原则】

    开发一个系统并不是一件困难的事,但是为何维护好一个系统却是一件让人头疼不以的事?   在笔者的观念中这一切都源自于需求.   如果在软件开发完成之后,需求就不再改变,那大部分程序都不需要维护了.但是, ...

  6. Java设计模式六大原则-2

    Java设计模式六大原则-2 做Java程序开发的每天都在使用JDK,Spring,SpringMvc,Mybatis,Netty,MINA等框架,但很少有人懂得背后的原理.即使打开跟下原码也是一头雾 ...

  7. Java设计模式六大原则-1

    Java设计模式六大原则-1 做Java程序开发的每天都在使用JDK,Spring,SpringMvc,Mybatis,Netty,MINA等框架,但很少有人懂得背后的原理.即使打开跟下原码也是一头雾 ...

  8. Java基础学习总结(84)——Java面向对象六大原则和设计模式

    面向对象六大原则 在此之前,有一点需要大家知道,熟悉这些原则并不是说你写出的程序就一定灵活.清晰,只是为你优秀的代码之路铺上了一层栅栏,在这些原则的指导下,你才能避免陷入一些常见的代码泥沼,从而让你写 ...

  9. 1、Java基础:面向对象六大原则

    本文主要介绍了面向对象六大原则. 单一职责原则(Single-Resposibility Principle). “对一个类而言,应该仅有一个引起它变化的原因.”本原则是我们非常熟悉地”高内聚性原则” ...

随机推荐

  1. BI生态圈常用端口使用配置总结

    Hadoop集群的各部分一般都会使用到多个端口,有些是daemon之间进行交互之用,有些是用于RPC访问以及HTTP访问.而随着Hadoop周边组件的增多,完全记不住哪个端口对应哪个应用,特收集记录如 ...

  2. Hazelcast是什么

    Hazelcast是什么    “分布式”.“集群服务”.“网格式内存数据”.“分布式缓存“.“弹性可伸缩服务”——这些牛逼闪闪的名词拿到哪都是ITer装逼的不二之选.在Javaer的世界,有这样一个 ...

  3. 执行了‘“npm install mysql"

    http是核心模块,封装到安装包里面了,如果在你项目的当前目录下<code>npm install mysql<code>的话就会在你当前目录下的node_modules文件夹 ...

  4. ***在PHP语言中使用JSON和将json还原成数组(json_decode()的常见错误)

    在之前我写过php返回json数据简单实例,刚刚上网,突然发现一篇文章,也是介绍json的,还挺详细,值得参考.内容如下 从5.2版本开始,PHP原生提供json_encode()和json_deco ...

  5. 微信小程序实现即时通信聊天功能的实例代码

    项目背景:小程序中实现实时聊天功能 一.服务器域名配置 配置流程 配置参考URL:https://developers.weixin.qq.com/miniprogram/dev/api/api-ne ...

  6. 一个轻巧高效的多线程c++stream风格异步日志(二)

    目录 一个轻巧高效的多线程c++stream风格异步日志(二) 前言 LogFile类 AsyncLogging类 AsyncLogging实现 增加备用缓存 结语 一个轻巧高效的多线程c++stre ...

  7. 接口调试工具ApiPost的发送超时时间设置方法

    有部分使用ApiPost的同学反应:发送接口调试时,响应超时时间设置的太短导致接口访问失败,怎么设置呢? 就连百度也有很多人在搜: 今天就来说一说. ApiPost简介: ApiPost是一个支持团队 ...

  8. VScode 光标乱跳

    JS-CS_html formatter 卸载这个插件 如果没有,或者卸载跟这个类似的,如果还是没有就忽略这个 如果设置过自动保存 在配置上修改为 "files.autoSaveDelay& ...

  9. 系统的Drawable(二)-Selector

    系统的Drawable(二)-Selector Selector漫谈 Selector是定义 StateListDrawable 的标签,该Drawable代表着一个Drawable的集合,每一个Dr ...

  10. DIM-00014: Cannot open the Windows NT Service Control Manager.

    创建Oracle数据库时出错: OPW-00001: Unable to open password-file DIM-00014: Cannot open the Windows NT Servic ...