• 再思考设计模式


    学习技巧,化整为零,量化记忆,逐个击破

    1、设计模式的目标,6个

    可读性便于他人阅读和理解
    可重用性相同代码无需多次编写
    可扩展性添加新的功能比较容易
    可靠性添加新功能后不影响原有功能
    可维护性便于他人开发维护
    高内聚、低耦合功能模块内紧密联系,功能模块之间不耦合

    2、设计模式之魂,6大指导原则

    单一职责一个类只负责一个职责,否则一个职责代码改动会对其他职责执行产生影响
    开闭对开发者扩展开放,对使用者修改关闭
    里氏替换派生类(子类)对象可以替代其基类(超类)对象
    迪米特一个对象对其他对象保持最少的了解,最少知道原则
    接口隔离不应该依赖不需要的接口
    依赖倒置高层不依赖底层模块,都依赖抽象。抽象不依赖实现细节,细节依赖抽象。简单说是面向接口编程

    3、设计模式的种类,分3类共23种,"   " 表示做法相似,但是目标不同

    创建型5个
    工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
    工厂方法工厂不再创建产品,而是将不同产品交给不同工厂,解决单工厂的单一职责问题
    抽象工厂创建工厂的工厂,更高的抽象
    单例一个类在一个jvm的堆中只有一个对象,区别于spring的单例Bean(一个某名字或某类型的类的Bean只存在一个)
    建造者常用于较多构造参数时的参数构建,在原类中创建静态
    原型

    对象copy及重复使用

    深拷贝对于基础类型和string,值拷贝,而引用类型将会开辟新的堆空间再传递新的引用
    浅拷贝对于基础类型和string,值拷贝,而引用类型传递引用
    行为型7个
    适配器、装饰器、代理、外观、桥接、组合、享元
    适配器继承或依赖(推荐)已有接口,实现目标接口
    装饰器子类(或实现类)通过构造方法传入同一超类(或接口)的子类(或实现类),装饰共有的方法
    代理
    静态代理代理类中(实现同一接口)传入原类,以便在代理类中扩展原类的功能,在编译前设计好
    动态代理动态的创建代理对象,在运行时设计。主要有jdk的反射实现和cglib的asm实现两种。
    桥接抽象部分与实现部分解耦,使得抽象与实现独立扩展。如果功能既有抽象也有实现部分,那么把实现部分通过构造方法独立出来而不是直接实现
    外观在类中封装了其他类的创建,以供自己使用这些类的属性和方法
    组合至上而下的树形结构,且每个节点都是同一个类的对象
    享元共享元数据,也就是对象的缓存便于重复使用

    结构型11个

    待续。。。

  • 相关阅读:
    httprunner实战接口测试笔记,拿走不谢
    【21天学习挑战赛—经典算法】快速排序
    SpringMVC学习(三)SpringMVC原理
    【MindSpore论文精讲】AAAI长尾问题中训练技巧的总结
    Java核心编程(17)
    Rust 语言中的结构体
    常见的屏幕接口
    tomcat的安装和解析
    第三章 Scala运算符
    【云原生 | 从零开始学Kubernetes】二、使用kubeadm搭建K8S集群
  • 原文地址:https://blog.csdn.net/z275598733/article/details/132709521