装饰器模式

    1. 设计模式

   软件开发过程中,遇到相似问题,将问题的解决方式抽取模型(套路)

   单例,工厂,适配器,装饰者,动态代理

 

    1. 谷歌汽车场景

*_ java设计了汽车开发约定

interface ICar{ start  run  stop}

class GoogleCar implements ICar{}

*_希望在将谷歌Car接入到生态圈平台时,增强汽车启动功能

*_装饰者模式(当需要对原有功能进行增强时使用,)

 场景:二次开发的时候,无法获取到源码,无法使用继承前提下,要对已经存在对象上的功能进

     行增强.

装饰者模式的使用场合

  • 动态、透明地给特定对象添加职责,也就是说,不会影响到其他对象。
  • 用于那些可以随时撤销的职责。
  • 当用子类进行扩展是不切实际的时候。有时需要大量的独立扩展并将导致支持各种组合的子类数量大爆炸 (比如小白的例子)。或者一个类的定义可能是隐藏的是子类无法获取到的。

 前提: 可以获取到被装饰的对象GoogleCar实现的所有接口

 实现思路: 自定定义装饰类实现ICar接口,为自定义装饰类传递被装饰的对象

 

弊端:如果被实现的接口中的方法过多,装饰类中的方法过多冗余

 

*_动态代理模式

  原理:通过虚拟机在内存中创建类似MyCar.class文件

  要创建MyCar.class文件告诉虚拟机:

1_被创建的字节码文件上应该有多少方法

2_被创建的字节码上的方法如何来实现

 

 

字节码加载器:

  jdk有一些程序,专业将各种字节码文件加载到内存.这类程序简称为字节码加载器

 

如何将字节码文件class文件加载到内存?

  底层实现过程,利用IO流技术,获取到文件中的数据加载到内存

 

字节码加载器:3种  

  系统引导加载器:

 

 

    1. 案例:动态代理解决全站乱码问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值