工厂模式
作用:
实现了创建者和调用者的分离
核心本质:
- 实例化对象不使用new,用工厂方法代替
- 将选择实现类、创建对象统一管理和控制。从而将调用方跟实现类解耦
工厂模式的三种形式
- 简单工厂模式
用来生产同一等级结构中的任意产品(对于增加新的产品,需要覆盖已有代码) - 工厂方法模式
用来生产同一等级结构中的固定产品(支持增加任意产品) - 抽象工厂模式
围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂
不使用工厂模式的时候
简单工厂的使用
方法一:方法二:
思路图:
工厂方法的使用
思路图:
总结:
- 简单工厂模式(静态工厂模式)
虽然某种程度上不符合设计原则,但实际使用最多 - 工厂方法模式
不修改已有类的前提下,通过增加新的工厂类实现扩展 - 抽象工厂模式
不可以增加产品,可以增加产品族
代理模式
代理模式的分类:
- 静态代理
- 动态代理
静态代理
角色分析:
-
抽象角色:一般会使用接口或者抽象类解决 -
真实角色:被代理的角色 -
代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作 -
客户:访问代理对象的人
初始模式模拟:
代理模式模拟:
代理模式模拟功效:思路图:
代理模式的好处:
- 可以使真实角色的操作更加纯粹,不用去关注一些公共的业务
- 公共内容交给代理角色,实现业务的分工
- 公共业务发生扩展的时候,方便集中管理
缺点:
- 一个真实角色就会产生一个代理角色,代码量会翻倍,开发效率会变低
动态代理
- 动态代理和静态代理角色一样
- 动态代理的代理类是动态生成的,不是我们直接写好的
- 动态代理分为两大类:基于接口的代理,基于类的动态代理
- 基于接口—JDK 动态代理
- 基于类-------cglib
- java字节码实现: javasist