软件设计的6大原则

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个原则都是开闭原则的指导设计工具和方法,开闭原则是他们的精神领袖。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Python6大设计原则 阅读目录 内容总览 六大设计原则都有哪些 一、单一职责原则 二、里氏替换原则 三、依赖倒...
    tomtiddler阅读 5,482评论 0 0
  • 程序设计的6大原则: 单一职责原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则开闭原则 从根本学好,理解为什么要...
    silencefun阅读 7,001评论 1 4
  • 1、单一职能原则(Single Responsibility Principle, SRP) 定义 There s...
    tianranll阅读 3,959评论 0 1
  • 设计模式6大原则 转自:http://www.cnblogs.com/devinzhang/archive/201...
    犀利的小眼神阅读 3,173评论 0 1
  • 刚工作那会住进这个小区的,那会总听人说:现在这世界,人情冷漠啊,楼上楼下邻居都不认识的,还有新闻说小偷光明...
    乖牛妞的妞阅读 2,761评论 0 4