软件设计原则
1:设计目的
做设计要完成两个目标,首先是实现需求,再次在满足需求基础上如何节约成本。第一个目标是不用讨论的,好的设计要满足第二个目标。第二个目标可理解为非业务考量的质量指标。结合软件特点,质量目标:
容易扩展,可重用,方便重用,简单,容易移植等。
2:设计原则
基于这个目标衍生软件设计的原则
1:开闭原则
软件应该对扩展开放,对修改关闭。
又新的需要需要满足时添加代码,而不是修改已有的代码。
2:依赖倒置原则
高层不依赖底层,大家都依赖抽象,抽象不依赖实现,实现依赖抽象
3:Liskon 替换原则
继承要符合这个原则,父类可以用子类替换。
设计类体系时要注意这个问题,使用者在使用父类的地方可以用子类替换,替换后要仍然符合使用者的预期。否则对使用者来说就是不可控的。这样的类体系就是失败的。
这里的符合使用者预期是从对象的行为上考虑的,面向对象就是行为的封装抽象。
比如马,小马,如果设计的马的行为是骑,小马继承马就是错误的,小马不能骑,不能替换父类。
更抽象的说子类提供的契约不能比父类的更严格。否则替换时就会出现不符合契约。
4:单一职责
一个类只有一个引起它变化的原因
5:接口隔离
不强迫用户依赖他不需要的方法。不把用户不需要的接口暴露给他。
单一职责要求尽量拆开,如果不能进一步拆开,用接口隔离
版权声明: 本文为 InfoQ 作者【superman】的原创文章。
原文链接:【http://xie.infoq.cn/article/cb4e33ae6092833dbd7d70ae7】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论