• 再思考设计模式


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

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

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

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

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

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

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

    对象copy及重复使用

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

    结构型11个

    待续。。。

  • 相关阅读:
    Elastic Stack 8.11:引入一种新的强大查询语言 ES|QL
    Redis 是什么和使用场景概述(技术选型)
    Linux Cgroup v1(中文翻译)(4):Block IO Controller
    C++总结
    Qt学习总结之QComboBox
    考Oracle OCM 的作用
    MySQL基础8-多表查询
    电脑报错由于找不到vcruntime140.dll文件怎么修复
    H5游戏开发-搭建开发环境
    Git 学习笔记 | Git 的简介与历史
  • 原文地址:https://blog.csdn.net/z275598733/article/details/132709521