面向对象编程的六个基本原则
来源:互联网 发布:软件代理销售合同 编辑:程序博客网 时间:2024/04/29 20:34
运用面向对象的思想进行软件设计时要遵循的6个基本原则:
(1) 单一职责原则:一个类只负责一项职责。降低代码复杂度,增加可读性可维护性,只有在逻辑足够简单、类中的方法足够少时才可以在代码级别上违反单一职责原则。职责被分解为很多细粒度的职责,程序已经写好的情况下,分解类开销大(分解意味着零散,加载变的复杂,阅读也变得复杂),修改类虽然违反单一职责原则,但是是个不错的选择。
(2) 里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能。这项原则并不是要避免多态,而是要求子类在继承父类的时候,不能与父类已经定好的契约冲突,也就是不要重写父类已经实现的方法。
LSP原则是:只要父类能出现的地方子类就可以出现,而且替换为子类还不产生任何错误或异常。怎么做到:
子类重载父类方法,方法的前置条件要比父类更宽松
子类实现父类的抽象方法时,方法的后置条件要比父类更严格。
(3) 依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。它的核心是面向接口编程。
老师和家长给孩子讲故事,只要给老师和家长一个可读的东西,他们就可以给孩子讲故事了。(Readable、Speaker)。Test-Driven Development开发模式就是依赖倒置原则最成功的应用。
依赖的关系的实现:接口传递、构造方法传递、setter方法传递。
(4) 接口隔离原则:客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上。
接口尽量小,但是要有限度。
为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。
提高内聚,减少对外交互,writeless methods,do more things.
(5) 迪米特法则:一个对象应该对其他对象保持最少的理解。
类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。迪米特法则就是为了实现低耦合。
怎么在编程中体现:
只与直接的朋友通信,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友。也就是说,陌生的类最好不要作为局部变量的形式出现在类的内部。
(6) 开闭原则:对扩展开放,对修改关闭。
单一职责原则:职责单一。
里氏替换原则:不要破坏继承体系结构。
依赖倒置原则:面向接口编程
接口隔离原则:设计接口时要精简单一。
迪米特原则:降低耦合
者五个原则都是开源原则的注意事项,开闭原则是一切编程的出发点和目的。
设计模式虽好,但是也要有个度,避免过度设计的危险。
- 面向对象编程的六个基本原则
- 面向对象编程的基本原则
- 面向对象编程的基本原则
- 面向对象编程的基本原则
- 面向对象编程语言的基本原则
- 聊聊面向对象编程的几个基本原则
- 面向对象的基本原则:
- 面向对象的基本原则
- 面向对象的基本原则
- 面向对象的基本原则
- 面向对象的基本原则
- 面向对象的基本原则
- PHP面向对象编程基本原则
- 面向对象设计的基本原则
- 面向对象程序设计的基本原则
- 面向对象设计的基本原则!
- 面向对象程序设计的基本原则
- 面向对象设计的基本原则
- oracle收集系统统计信息
- iOS7 (xCode5编译旧版本程序)获取到的iPhone5屏幕大小居然是320*480的问题
- VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程
- 通向架构师的道路(第二十三天)maven与ant的奇妙整合
- hdu 2509 - Be the Winner(简单博弈)
- 面向对象编程的六个基本原则
- CSS 子元素选择器
- CKFinder 2.0.2 去除 This is the demo version of CKFinder. Click here to visit our web site
- 通向架构师的道路(第二十四天)之Oracle性能调优-朝拜先知之旅
- hdu 4596 Yet another end of the world (一阶不定方程可解性 )
- sql 2005 清除日志 四舍五入
- 通向架构师的道路(第二十五天)SSH的单元测试与dbunit的整合
- Linux文件系统(一)-群居和一
- 字符的长度选择