软件设计原则:函数
1.单一职责原则(Single Responsibility Principle)工具
单一职责原则的定义是:“There should never be more than one reason for a class to change.”,也就是有且仅有一个缘由引发类的变动。这样能够下降类的复杂性,实现什么职责都有清晰明确的定义;可读性提升;可维护性提升;变动引发的风险下降。spa
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)ip
接口隔离原则的定义是接口尽可能细化,同时接口中的方法尽可能少。须要一个接口只服务于一个子模块或者业务逻辑;经过业务逻辑尽可能压缩接口中的方法;这样能够提升内聚,下降耦合,重用代码。ci
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个原则都是开闭原则的指导设计工具和方法,开闭原则是他们的精神领袖。