欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

软件架构设计的七大原则

程序员文章站 2022-05-29 10:19:55
一、开闭原则(是面向对象开发中最基础的原则,它指导建立更加稳定灵活的系统) 开闭原则是对扩展和修改行为的一个原则,指的是软件中的函数、类、模块应该对扩展开放,对修改关闭。强调的是用抽象构建框架,用实现扩展细节。常用于解决的问题如:更新版本时,尽量在不修改源代码,但增加新功能。 二、依赖倒置 依赖倒置 ......

一、开闭原则(是面向对象开发中最基础的原则,它指导建立更加稳定灵活的系统)

  开闭原则是对扩展和修改行为的一个原则,指的是软件中的函数、类、模块应该对扩展开放,对修改关闭。强调的是用抽象构建框架,用实现扩展细节。常用于解决的问题如:更新版本时,尽量在不修改源代码,但增加新功能。

二、依赖倒置

  依赖倒置是指设计系统代码结构时,高层模块不依赖底层模块,它们都应依赖于其抽象。细节应该依赖抽象。通过依赖倒置,可减少系统之间模块的耦合性,提高系统的稳定性,提高系统的可读性与可维护性,降低修改程序带来的风险。

  ps:以抽象为基准设计的架构要比以细节为基准设计的架构稳定很多。所以在拿到需求时,要面向接口编程,先顶层再细节来设计代码结构。

       依赖有依赖注入(最常用)、构造方法注入(单例不可用)、setter注入(单例多用)。

三、单一职责原则

  是指一个类只负责一个功能,不要存在多余一个导致类变更的原因。假设一个类负责两个职责,修改一个可能会影响另一个功能发生故障。只负责一个类可降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险。

四、接口隔离原则

  是指用多个专门的接口,而不是使用单一的总接口,客户端不应该依赖他不需要的接口。这个原则指导我们在设计接口时应注意以下几点:

  1.一个类对一个类的依赖应该建立在最小的基础上

  2.建立单一接口,不应建立臃肿的接口。

  3.细化接口功能,每个接口内方法要尽量少(不是越少越好,要适度)

  接口隔离原则符合我们所说的“高内聚,低耦合”的思想,从而使类具有很好的可维护性、可读性、可扩展性。我们在设计接口时,要多花时间去思考业务模型,包括以后可能要修改的还要去做一些预判。所以,对于抽象,对业务模型的理解是最重要的。

五、迪米特法则

   是指一个对象应该保持对其他对象最少的了解,也叫最少了解法则,尽量降低类与类之间的耦合。它强调之和朋友交流,不和陌生人说话。如类中的成员变量、函数参数、函数返回值都是朋友,函数内部的对象是陌生人。

六、里氏替换原则

  里氏替换原则可以理解为一个软件实体如果能适用父类的话,一定也能适用子类。所有能引用父类的地方都能透明的使用子类对象。子类可替换父类对象而使程序逻辑不变。引申为:子类可扩展父类的方法,但不能覆盖父类原有的功能。

  总结为:1.子类可以实现父类的抽象方法,但不能父类的非抽象方法。

      2.子类可增加自己特有的方法。

      3.当子类的方法重载父类的方法时,子类的前置参数(入参)相比父类更宽松。

      4.当子类的方法重载父类的方法时,子类的后置参数(函数返回值)相比父类更严格或相等。

七、合成复用原则

  指尽量使用对象组合、聚合,而不是继承来实现软件复用的目的。这样可以使类更加灵活、降低类与类之间的耦合度。

  继承叫白箱复用,会将父类的实现细节全部暴露给子类。合成复用叫黑箱复用,对类以外是无法获取到实现细节的。

总结:

  我们在写代码时,要根据实际情况(人力、时间、成本)综合考虑,不需刻意追求完美,要在适当的场景考虑设计原则,体现的是一种平衡取舍,来帮助我们设计出更优雅的代码结构。