您的位置:首页 > 其它

面向对象软件设计的原则

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