面向对象设计原则

面向对象设计原则

概述

软件的可维护性可复用性是两个非常重要的用于衡量软件质量的属性,软件的可维护性是指软件能够被理解、改正、适应及扩展的难易程度,软件的可复用性是指软件能够被重复使用的难易程度。

面向对象设计原则也是后续设计模式学习的基础,每一个设计模式都符合某一个或多个面向对象的设计原则,面向对象设计原则是用于评价一个设计模式的使用效果的重要指标之一。

单一职责原则

一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。

在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,相当于将这些职责耦合在一起,当其中的一个职责变化时可能会影响到其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装同一个类中。

单一职责原则是实现高内聚低耦合的指导方针。

开闭原则

软件实体应该对扩展开放,对修改关闭。

开闭原则就是指软件实体应尽量在不修改原有代码的情况下进行扩展。

任何软件都要面临一个很重要的问题,即他们的需求会随着时间的推移而发生变化。当软件系统需要面临新的需求时应尽量保证系统的设计框架是稳定的。

里氏代换原则

所有引用基类的地方必须能透明的使用其子类。

里氏代换原则表明,在软件中将一个基类对象替换为它的子类对象,程序将不会产生任何错误和异常。

在运用里氏代换原则时应该将父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类中声明的方法,在运行时子类实例替换父类实例,可以很方便的扩展系统的功能,无需修改原有子类的代码,增加一个新的功能可以通过增加换一个子类来实现。

依赖倒转原则

高层模块不应依赖低层模块,他们都应依赖抽象。抽象不应依赖细节,细节应该依赖抽象。

依赖倒转原则要求针对接口编程,不要针对实现编程。

依赖倒转原则要求在程序代码中传递参数时或在关联关系中尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明以及数据类型的转换等,而不要用具体类来做这些事情。

在引入抽象层后,系统将具有很好的灵活性,在程序中尽量使用抽象层进行编程,而将具体类卸载配置文件中,这样如果系统行为发生了变化,只需要对抽象层进行扩展,并修改配置文件,而无需修改原有系统代码,在不修改的情况下来扩展系统的功能,满足开闭原则的要求。

接口隔离原则

客户端不应依赖那些它不需要的接口。

当一个接口太大时需要将它分割成一些更细小的接口,使用该接口的客户端只需要知道与之相关的方法即可。每一个接口应当承担一种相对独立的角色,不干不该干的事,该干的事都要干。

合成复用原则

优先通过对象组合,而不是继承来达到复用的目的。

使用组合关系而不是继承可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较小;其次才考虑继承,在继承时需要严格遵循李氏替换原则。

迪米特法则

每一个软件单位对其他单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。

迪米特法则要求一个软件实体应当尽可能少的与其他实体发生相互作用。如果一个系统符合迪米特法则,那么当其中某一个模块发生修改时就会尽量少的影响其他模块,扩展会相对容易。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值