面向对象五大基本原则

转载 2015年11月19日 11:28:38

以前一直认为程序中的类有使用到封装继承多态就是面向对象设计,其实不然

封装,继承,多态只是面向对象的三大特性,但是在设计程序的时候并不是说类的结构使用到了(或是体现出了)这三个特性就是面向对象,

其实真正的面向对象设计是要符合下面的五大原则,

面向对象的五大基本原则
单一职责原则(SRP)
开放封闭原则(OCP)
里氏替换原则(LSP)
依赖倒置原则(DIP)
接口隔离原则(ISP)

单一职责原则(SRP)

•      一个类应该仅有一个引起它变化的原因(最简单,最容易理解却最不容易做到的一个设计原则)
职员类例子:
  比如在职员类里,将工程师、销售人员、销售经理这些情况都放在职员类里考虑,其结果将会非常混乱,在这个假设下,职员类里的每个方法都要if else判断是哪种情况,从类结构上来说将会十分臃肿,并且上述三种的职员类型,不论哪一种发生需求变化,都会改变职员类!这个是大家所不愿意看到的!

开放封闭原则(OCP)

•      既开放又封闭,对扩展是开放的,对更改是封闭的!

•      扩展即扩展现行的模块,当我们软件的实际应用发生改变时,出现新的需求,就需要我们对模块进行扩展,使其能够满足新的需求!

更改封闭即是在我们对模块进行扩展时,勿需对源有程序代码和DLL进行修改或重新编译文件!

这个原则对我们在设计类的时候很有帮助,坚持这个原则就必须尽量考虑接口封装,抽象机制和多态技术!


里氏替换原则(LSP)

•      子类可以替换父类并且出现在父类能够出现的任何地方

•      这个原则也是在贯彻GOF倡导的面向接口编程!
在这个原则中父类应尽可能使用接口或者抽象类来实现!

子类通过实现了父类接口,能够替父类的使用地方!
通过这个原则,我们客户端在使用父类接口的时候,通过子类实现!
意思就是说我们依赖父类接口,在客户端声明一个父类接口,通过其子类来实现
这个时候就要求子类必须能够替换父类所出现的任何地方,这样做的好处就是,在根据新要求扩展父类接口的新子类的时候而不影响当前客户端的使用!

依赖倒置原则(DIP)

•      传统的结构化编程中,最上层的模块通常都要依赖下面的子模块来实现,也
称为高层依赖低层!
所以DIP原则就是要逆转这种依赖关系,让高层模块不要依赖低层模块,所以称之为依赖倒置原则!

ISP 接口隔离原则

•      这个原则的意思是:使用多个专门的接口比使用单个接口要好的多!

这个我有体会,在我实际编程中,为了减少接口的定义,将许多类似的方法都放在一个接口中,最后发现,维护和实现接口的时候花了太多精力,而接口所定义的操作相当于对客户端的一种承诺,这种承诺当然是越少越好,越精练越好,过多的承诺带来的就是你的大量精力和时间去维护!

面向对象的五大基本原则-solid

面向对象五大基本原则,一个单词:立方体(solid),很好记!!! s( Single-Resposibility Principle ): 单一职责原则 一个类,最好只做一件事,只有一个引起它的...
  • hyqsong
  • hyqsong
  • 2016年05月31日 07:27
  • 783

面向对象的三个基本元素,五大基本原则

三个基本元素: 1. 封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接...
  • u014745848
  • u014745848
  • 2016年03月02日 22:32
  • 2229

面向对象设计的五个基本原则

面向对象的3个基本要素:封装、继承、多态 面向对象的5个基本设计原则: 单一职责原则(Single-Resposibility Principle)     其核心思想为:一个类,最...
  • rankun1
  • rankun1
  • 2016年03月03日 16:32
  • 2679

C++ 面向对象五大原则

一,单一功能原则 原理:单一职责原则可以看作是低耦合、高内聚在面向对象原则上的引申,将功能定义为引起变化的原因,以提高内聚性来减少引起变化的原因。功能过多,可能引起它变化的原因就越多,这将导致功能依赖...
  • cloud323
  • cloud323
  • 2017年07月27日 10:12
  • 380

Java面向对象的五个基本原则

参考博客:Ask马小向的专栏,网址:http://blog.csdn.net/happymatilian/article/details/48440073 1  单一职责原则(Singl...
  • zyzn1425077119
  • zyzn1425077119
  • 2015年10月14日 09:22
  • 2075

php面向对象五大原则

面向对象设计的五大原则分别是单一职原理,开放-封闭原则,替换原则,依赖倒置原则责原则,接口隔离。 这五大原则是23中设计模式的基础。 1:单一职原理 2:开放-封闭原则 3:替换原则 4:...
  • dkxnight
  • dkxnight
  • 2014年12月23日 16:21
  • 664

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

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

PHP面向对象——三大基本特性与五大基本原则

三大特性是:封装、继承、多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 封装是面向对象的特征之一,是对象和类概念的主要特...
  • github_36700243
  • github_36700243
  • 2017年03月16日 17:57
  • 363

面向对象三大基本特性,五大基本原则(上篇)

透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础. 三大特性是:封装,继承,多态   所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象...
  • david840316
  • david840316
  • 2016年05月17日 09:08
  • 843

面向对象的5个基本原则

最基本的设计原则有5条,分别是:单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则和Liskov替换原则。   单一职责原则   对于单一职责原则,其核心思想为:一个类,最好只做一件事...
  • sjpz0124
  • sjpz0124
  • 2015年08月24日 15:28
  • 401
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象五大基本原则
举报原因:
原因补充:

(最多只允许输入30个字)