guoguo 3 years ago
parent d094dd95b0
commit aa0107e360

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

@ -0,0 +1,242 @@
# 设计模式学习
## 大纲
**概述**
**1.如何评价代码的好坏**
**2.编程方法论**
**3.设计模式分类**
**4.六大设计原则**
**单一职责**
**里氏替换**
**依赖倒置**
**接口隔离**
**迪米特**
**开闭**
**名词解释**
**创建型**
**单例模式**
**工厂模式**
**抽象工厂模式**
**建造者模式**
**原型模式**
**结构型**
**代理模式**
**适配器模式**
**桥接模式**
**装饰器模式**
**组合模式**
**外观模式**
**享元模式**
**行为型**
**观察者模式**
**模板模式**
**策略模式**
**责任链模式**
**迭代器模式**
**状态模式**
**访问者模式**
**备忘录模式**
**命令模式**
**解释器模式**
**中介模式**
**5.UML类图**
## 2023/1/30学习
概述
1.**如何评价代码的好坏**
可扩展 可复用 可读 简洁 可测试 灵活 可维护
2.**编程方法论**
设计模式 + 设计原则 + 面向对象 + 编程规范 融汇贯通(先实现再考虑其它的)
3.**设计模式分类**
创建型 行为型 结构型
4.**六大设计原则**
**单一职责**
一个类只负责一个功能
**里氏替换**
方法参数定义为接口类型,不同的业务传入不同的实现类
**依赖倒置**
上层不应该依赖下层如controller 不应该依赖serviceImpl应该依赖其接口
**接口隔离**
不同的业务系统,在使用同一个业务对象时(微服务中),应当针对不同的系统设计出最小的依赖接口
**迪米特**
一个类依赖另一个类,应该依赖其接口
**开闭**
在扩展新的业务 不能改变原有的业务功能
**5.UML类图**
![1.UML类图](D:\01\md文档\myimage\1.UML类图.jpg)
**创建型**
**单例模式**
饿汉式没有做到懒加载JVM保证线程安全
懒汉式不加锁:懒加载,线程不安全
懒汉式加锁:懒加载,线程不安全,锁粒度太大
DCL懒加载线程不安全
静态内部类懒加载JVM保证线程安全
枚举(最佳)
反射机制破坏单例模式 ,解决方案 在构造方法中添加 instance 非空判断
序列化破坏单例模式添加readResolve方法
**工厂模式**
简单工厂 优点: 象的创建和业务逻辑层分开 缺点:新增产品时需要修改工厂类 不满足ocp
工厂方法 优点在简单工厂的基础上为每一个产品增加一个工厂满足ocp 缺点:类爆炸
抽象工厂 优点:将产品进行分类,为一类产品创建一个工厂(减少了工厂的创建)
**建造者模式**
当产品对象非常复杂时,建造者需要分步骤执行,可以类似工厂方法模式
**原型模式**
根据已有的对象复制出一个新的,有浅克隆和深克隆之分
深克隆可以有 Cloneable接口或者BeanUtils或者SerializationUtils实现
**结构型**
**代理模式**
静态代理 与动态代理
区别在于 生成代理类的时机 不同 静态代理在编译时 动态代理在运行时
JDK动态代理调用Proxy.newProxyInstance方法动态创建代理类字节码二进制流用的是ProxyGenarator技术
CGLIB动态代理调用的是Enhancer第三方ASM框架生成字节码
两者对比:
生成代理类的技术不同jdk使用ProxyGenarator生成cglib使用ASM框架生成
生成代理类的数量不同jdk只生成一个代理类cglig生成一个代理类和两个索引类(方法名和索引)
代理类的增强方式不同jdk是实现共同的接口cglib是继承
调用方式不用jdk是反射调用代理类方法 -> invok() ->反射调用目标类方法cglib是直接调用 代理类方法 -> intercept->直接调用目标类方法
**适配器模式**
**桥接模式**
指生产一个产品,分多步执行,每一步都有多种选择
**装饰器模式**
**组合模式**
**外观模式**
**享元模式**
**行为型**
**观察者模式**
**模板模式**
**策略模式**
**责任链模式**
**迭代器模式**
**状态模式**
**访问者模式**
**备忘录模式**
**命令模式**
**解释器模式**
**中介模式**
设计原则总结
![2. 六大设计原则](D:\01\md文档\myimage\2. 六大设计原则.jpg)
工厂模式总结
![3. 工厂模式](D:\01\md文档\myimage\3. 工厂模式.jpg)
建造者模式总结
![4.建造者模式](D:\01\md文档\myimage\4.建造者模式.jpg)
动态代理总结
![5.动态代理](D:\01\md文档\myimage\5.动态代理.jpg)
Loading…
Cancel
Save