面向对象”是专指在程序设计中采用封装、继承、多态等设计方法,达到高内聚、低耦合的效果。一个好的系统设计应该具备以下几个性质:灵活性,可扩展性,可插入性。才能让软件具有可维护性和可复用性。
常用的面向对象设计原则包括7个,这些原则并不是孤立存在的,它们相互依赖,相互补充。
1.单一职责原则:
类的职责要单一。无论是类的属性还是类的方法。承担的职责越多,它被复用的可能性越小,而且如果一个类承担的职责过多,可能引起这个类变化的原因就越多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的变化。举个例子来说,软件为什么要分层,而不把一个功能的所有代码全写在一个页面,就是这个道理。
2.开闭原则:
一个软件实体应当对扩展开放,对修改关闭。也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为。抽象化是开闭原则的关键。里氏代换原则和依赖倒转原则都是开闭原则的实现方式。
3.里氏代换原则:
在软件中如果能够使用基类对象,那么一定能够使用其子类对象。里氏代换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。
4.依赖倒转原则
代码要依赖于抽象的类,而不要依赖于具体的类;要针对接口或抽象类编程,而不是针对具体类编程。Spring的注入就是依赖倒转的体现。
5.接口隔离原则
一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。意思是使用多个专门的接口,而不使用单一的总接口。和设计模式的门面模式的思想恰好相反。
6.合成复用原则
尽量使用对象组合,而不是继承来达到复用的目的。在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简言之:要尽量使用组合/聚合关系,少用继承。下面比较两个复用方式。
继承复用:实现简单,易于扩展。破坏系统的封装性;从基类继承而来的实现是静态的,不可能在运行时发生改变,没有足够的灵活性;只能在有限的环境中使用。(“白箱”复用 )
组合/聚合复用:耦合度相对较低,选择性地调用成员对象的操作;可以在运行时动态进行。(“黑箱”复用 )
7.迪米特法则
一个软件实体应当尽可能少的与其他实体发生相互作用。如果两个类之间不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
相关推荐
而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。 面向对象设计原则和设计模式也是...
包括:系统总体设计原则,业务应用支撑平台设计原则,共享交换区数据库设计原则,档案管理系统设计原则,总集成设计原则 ,系统及应用支撑环境设计原则,安全保障体系设计原则,应用支撑平台设计原则 ,等等数十种...
emi设计原则 emi设计原则 emi设计原则 emi设计原则emi设计原则
高速PCB EMC设计的47个原则二、PCB设计原则归纳 原则1:PCB时钟频率超过5MHZ或信号上升时间小于5ns,一般需要使用多层板设计。 原因:采用多层板设计信号回路面积能够得到很好的控制。 原则2:对于多层板,关键...
JAVA 24种设计模式介绍与JAVA6大设计原则
24种设计模式介绍与6大设计原则24种设计模式介绍与6大设计原则
详细描述全部(23种)设计模式与设计原则(6种)。 (一)设计原则包括: 1、开闭原则 2、里氏代换原则 3、依赖转换原则 4、接口隔离原则 5、合成/聚合复用原则 6、最少知识原则 (二)设计模式 1)工厂模式...
android 24种设计模式介绍与6大设计原则
11个重要的数据库设计原则
UML简介与面向对象的设计原则 建模的重要性? 如果你想搭一个狗窝,你备好木料、钉子和一些基本工具(如锤子、锯和卷尺) ,就可以开始工作。从制定一点初步的计划到完成一个满足适当功能的狗窝,你 可能不用别人...
面向对象设计原则:面向对象设计原则、开闭原则、里氏替换原则、里氏替换原则、里氏替换原则
面向对象的设计原则 单一职责原则 开闭原则 里氏替换原则 依赖倒置原则 接口分离原则 迪米特法则 合成复用原则
网页设计原则.txt格式 网页设计前的必读之物 设计原则是非常重要的!!!
EMI设计原则及电磁兼容设计原则有助于在电路板设计时候的抗干扰性能
oracle数据库索引设计原则. 数据库索引设计原则.
面向对象设计模式设计原则 自己下了看吧,,面向对象程序设计时候的 几个基本原则了
各种给力,软件设计原则,设计软件原则,原则设计软件,阮设计原则