软件架构的六大设计原则

软件设计原则:

1.单一职责原则(Single Responsibility Principle)

单一职责原则的定义是:There should never be more than one reason for a class to change.”,也就是有且仅有一个原因引起类的变更。这样可以降低类的复杂性,实现什么职责都有清晰明确的定义;可读性提高;可维护性提高;变更引起的风险降低。


2.里氏替换原则(Liskov Substitution Principle)

“龙生龙,凤生凤,老鼠生来会打洞。”这个就是我们经常开发过程中会用到的继承。里氏置换原则的定义是:Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常。这样的话就要求子类必须完全实现父类的方法;覆盖或实现父类的方法时输入参数可以被放大,输出结果可以被缩小(逆变协变)。采用里氏替换原则可以提高程序的健壮性,版本升级时也可以保持非常好的兼容性。


3.依赖倒置原则(Dependence Inversion Principle)

依赖倒置原则,模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;接口或者抽象类不依赖于实现类;实现类依赖与接口或抽象类。需要每个类尽量都有接口或者抽象类;变量的表面类型尽量是接口或者抽象类;任何类都不应该从具体类派生(超过两层), 尽量不要复写基类的方法。采用依赖倒置原则可减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码可读性和可维护性。依赖也可以称为注入,一般可以通过构造函数注入,属性注入,接口注入。


4.接口隔离原则(Interface Segregation Principle)

接口隔离原则的定义是接口尽量细化,同时接口中的方法尽量少。需要一个接口只服务于一个子模块或者业务逻辑;通过业务逻辑尽量压缩接口中的方法;这样可以提高内聚,降低耦合,重用代码。


5.迪米特法则(Law of Demeter)

迪米特法则,也称为最少知识原则,也就是一个对象应该对其他对象有最少的了解。需要只和朋友交流;朋友间也是有距离的;自己的就是自己的;如果一个类放在本类中,既不增加类间的关系,也对本类不产生负面影响,那就放置在本类中。类间解耦,弱耦合。


6.开闭原则(Open Closed Principle)

开闭原则,Software entities like classes, modules and functions should be open for extension but closed for modifications,软件实体比如类,模块,和函数应该对拓展开放,对修改关闭,也就是尽量通过拓展实体行为来实现变化。需要抽线约束,将相同的变化封装到一个接口或抽象类,将不同的变化封装到不同的接口或抽象类中。其实前面的5个原则都是开闭原则的指导设计工具和方法,开闭原则是他们的精神领袖。

 

posted @ 2018-05-12 11:51 Johar 阅读(...) 评论(...) 编辑 收藏