面向对象软件设计的原则

 
软件作为一种产品,从诞生之日开始就注定与其他产品不同,有两个重要的特点可以说明这一点。从维护方面来说,普通产品比如电视、洗衣机等,一出厂就不在变化,那么一旦出现故障,可以通过维修手册对大多数的状况进行处理,而软件则不同,大多数情况都是不可预料的bug,这在人们看来总是新的问题。另一方面从产品更新来看,从黑白电视更新到彩色电视,人们不得不从新购置一台,很少有人通过改装来实现,而软件产品则不同,往往一个观感上崭新的产品是从既有的软件升级而来,大部分组件是复用的。那么可以看出,软件产品的设计最重要的就是从它的可维护性和可复用性上来考虑。然而这两种特性在很多情况下是会发生冲突的,比如A和B都需要C来支持,这是一种复用。当B需要C提供一个新的功能的时候,A并不需要,那么如对C直接进行修改,往往就影响到了A的正常功能。那么,如何权衡这两者的关系呢。
由Peter Coad提出的,一个好的系统设计应该包括至少三个性质:可扩展性,和插入性和灵活性。根据大师们的经验总结,在OO设计的时候,需要遵循以下的原则:
最基础的就是“开——闭”原则,这是由Bertrand Meyer提出的,具体描述为:一个软件实体应当对扩展开放,对修改关闭。满足“开闭”原则的软件就满足上述的性质,通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新的需求,使变化中的软件系统有一定的适应性和灵活性;已有的软件模块,特别是重要的抽象层模块不能再修改,这就使变化中的软件系统有一定的稳定性和延续性。
“开闭”原则是一个基础性的原则,为了满足软件的扩展、插入和修改,OO设计时还要满足以下原则:
1.里式代换原则:任何基类可以出现的地方,子类一定可以出现。
2.依赖倒转原则:要依赖于抽象,不要依赖于实现。
3.合成/聚合复用原则:要尽量使用合成/聚合,而不是继承关系达到复用的目的。
4.迪米特法则:一个软件实体应当与尽可能少的其他实体发生相互作用。
5.接口隔离原则:应当为客户提供尽可能小的单独的接口,而不要提供复杂的大的接口。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值