Java 【Testing Career】关于设计模式的学习总结

thinker543 · 2023年02月24日 · 1438 次阅读

1 什么是设计模式

代码经验的总结。分类总结:
创建型:创建对象的时候隐藏创建逻辑的方式。
结构型:关注类和对象的组合
行为型:关注对象之间的通信

2 基本原则

设计代码,无非是想其 可维护,可复用,可扩展,灵活性高。

从基础原则的出发,可衍生出多种设计模式。当然,规则是规则,根据情况来进行运用

  • 单一职责原则
    就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。降低类的复杂度,提高类的可读性,提供系统的可维护性性,降低变更引起的风险。

  • 接口隔离原则
    用多个专门的接口,而不使用单一的总接口。

  • 迪米特法则
    最少知道原则,指一个对象应该对其他对象保持最少的了解,降低类与类之间的耦合。强调只和 “朋友” 交流,不和陌生人说话。出现在成员变量、方法的输入和输出中的类都可以成为成员朋友类。而出现在方法体内部的类不属于朋友类。

  • 合成复用原则
    尽量使用对象组合或对象聚合的方式实现代码复用,而不是用继承关系达到代码复用的目的。该原则使系统更加灵活,降低类和类的耦合度,一个类的变化对其它类造成的影响相对较小。

  • 开闭原则
    对软件实体(类、模块、函数等等)应该对扩展开放,对修改关闭,强调的是用抽象构建框架,用实现扩展细节。

  • 里氏代换原则
    官方:如果对每一个类型为 T1 的对象 o1,都有类型为 T2 的对象 o2,使得以 T1 定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。
    一个软件实体如果适用于一个父类,则一定适用于其子类,所有引用父类的地方必须能使用其子类的对象,子类对象能够替换父类对象,而程序逻辑不变。也可理解为子类可以扩展父类的功能,但不能改变父类原有的功能。

  • 依赖倒置原则
    设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖抽象,即抽象不应该依赖细节,细节应该依赖抽象。该原则降低类与类之间的耦合性,提供系统稳定性,提供代码的可读性和可维护性,并降低修改程序带来的风险。

3 我的理解

单一职责,在设计某个类的职责方面内聚,增加维护性,降低修改的风险。接口隔离原则,迪米特原则,都是类似的作用,接口隔离针对接口,合成原则针对于类之间的通信。开闭原则,强调对修改做关闭,对扩展开放,尽量不通过修改去改已经测试过的代码,而是用扩展的方法设计,减少对原有功能的影响。里氏代换原则是针对继承关系的规定,继承有一个很重要的作用是复用,因此,如果调用基类的地方也能调用子类对象,强调是不能改变基类原有的功能,是继承复用的保障。依赖倒置原则相当于依赖接口调用,而不是依赖具体的类调用,这样能保证需求有变化的时候,通过扩展而不是修改原有的实现类解决问题。

降低修改代码造成的风险。代码高内聚,低耦合,这样修改的时候,能够让修改的范围减小,依赖传递的风险减少。

参考:《设计模式就该怎么学》
《大话设计模式》
https://www.cnblogs.com/helios-fz/p/11895926.html

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册