架构师内功心法:设计模式(一)软件架构设计原则

写在前面:

  •  你好,欢迎关注!
  •  我热爱技术,热爱分享,热爱生活, 我始终相信:技术是开源的,知识是共享的!
  •  博客里面的内容大部分均为原创,是自己日常的学习记录和总结,便于自己在后面的时间里回顾,当然也是希望可以分享 自己的知识。如果你觉得还可以的话不妨关注一下,我们共同进步!
  •  个人除了分享博客之外,也喜欢看书,写一点日常杂文和心情分享,如果你感兴趣,也可以关注关注!
  •  公众号:傲骄鹿先生

目录

一、开闭原则( Open-Closed Principle )

二、依赖倒置(Dependence Inversion Principle)

三、单一职责原则( Simple Responsibility Pinciple )

四、接口隔离原则( Interface Segregation Principle)

五、迪米特法则( Law of Demeter )

六、里氏替换原则( Liskov Substitution Principle )

七、合成复用原则( Composite/Aggregate Reuse Principle )

设计模式分类


一、开闭原则( Open-Closed Principle )

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

二、依赖倒置(Dependence Inversion Principle)

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

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

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

三、单一职责原则( Simple Responsibility Pinciple )

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

四、接口隔离原则( Interface Segregation Principle)

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

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

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

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

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

五、迪米特法则( Law of Demeter )

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

六、里氏替换原则( Liskov Substitution Principle )

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

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

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

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

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

七、合成复用原则( Composite/Aggregate Reuse Principle )

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

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

总结:

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

设计模式分类

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章