-
- 设计模式
软件开发过程中,遇到相似问题,将问题的解决方式抽取模型(套路)
单例,工厂,适配器,装饰者,动态代理
-
- 谷歌汽车场景
*_ java设计了汽车开发约定
interface ICar{ start run stop}
class GoogleCar implements ICar{}
*_希望在将谷歌Car接入到生态圈平台时,增强汽车启动功能
*_装饰者模式(当需要对原有功能进行增强时使用,)
场景:二次开发的时候,无法获取到源码,无法使用继承前提下,要对已经存在对象上的功能进
行增强.
装饰者模式的使用场合
- 动态、透明地给特定对象添加职责,也就是说,不会影响到其他对象。
- 用于那些可以随时撤销的职责。
- 当用子类进行扩展是不切实际的时候。有时需要大量的独立扩展并将导致支持各种组合的子类数量大爆炸 (比如小白的例子)。或者一个类的定义可能是隐藏的是子类无法获取到的。
前提: 可以获取到被装饰的对象GoogleCar实现的所有接口
实现思路: 自定定义装饰类实现ICar接口,为自定义装饰类传递被装饰的对象
弊端:如果被实现的接口中的方法过多,装饰类中的方法过多冗余
*_动态代理模式
原理:通过虚拟机在内存中创建类似MyCar.class文件
要创建MyCar.class文件告诉虚拟机:
1_被创建的字节码文件上应该有多少方法
2_被创建的字节码上的方法如何来实现
字节码加载器:
jdk有一些程序,专业将各种字节码文件加载到内存.这类程序简称为字节码加载器
如何将字节码文件class文件加载到内存?
底层实现过程,利用IO流技术,获取到文件中的数据加载到内存
字节码加载器:3种
系统引导加载器:
-
- 案例:动态代理解决全站乱码问题