设计模式系列-代理模式

设计模式系列-代理模式
引入代理:
现有一个导出文件的功能.现在需要记录每次导出文件所消耗的时间.如何实现?

使用代理类对原有类增强.
给主体加附加功能(不影响主体):在不需要原来的作者明确改动代码的情况下添加新功能。比如你没有原来的代码但想添加新功能,或者你需要的新功能仅用于某个地方而原来的功能用到更多的地方,所以不打算修改原来的功能而只是定制你新加的这部分
代理分为静态代理 和 动态代理

静态代理
/**
 * 导出器代理类(静态代理)
 * 
 * "代理类"与"被代理类"需要实现相同的接口(IFileExportor).
 * 代理类要关联"被代理类",代理类只对原始功能增强,实际功能交给被代理类执行
 * 
 * @author live
 * @2019年12月30日 @下午3:42:09
 */
 
 缺点:
 1)被代理类增改方法,静态代理类需要改变
 2)一个静态代理类,只能代理同一接口下的实现类.demo中"导出代理类"(ExportorProxy*代理了IFileExportor的实现类,如果需要代理"导入"类,则需要增加"导入代理类"
 
 
 动态代理

方式一:
JDK Proxy :必须实现至少一个接口才能实现对方法的拦截。
动态代理类:
 * 1.必须实现 InvocationHandler 接口,并且实现该接口中的invoke()
  //import java.lang.reflect.InvocationHandler;
  
优点
1)被代理类增改方法,动态代理类无需做任何改动
2)代理任何接口类

 

代码地址:

github:https://github.com/sunxiaoning90/com_live_test   (具体目录:com_live_test_designpattern

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值