代理

什么是代理

什么时候使用代理

改变我们之前的逻辑,执行方法之前做的什么事情,执行方法之后做了什么事情

方法增强

继承

子类继承父类,将父类的方法进行复写,从而进行增强

使用前提:

必须有父类,且存在继承关系

装饰者设计模式

此设计模式专门用于增强方法

使用前提:

必须有接口

缺点:

需要将接口的所有方法都实现

动态代理:

在运动时动态的创建代理类,完成增强操作,与装饰者相似

使用前提:

必须有接口:

难点:

需要反射技术

静态代理(装饰者模式)

设计模式

专门为解决某一类问题,而编写的固定格式的代码

装饰者固定结构

接口A,已知实现类C,需要装饰者创建代理类B

  1.  创建B类实现接口A
  2.  提供B类的构造方法,参数类型为A,用于接收A接口的其他实现类(C)
  3.  给类B添加类型为A成员变量,用于存放A接口的其他实现类
  4.  增强需要的方法
  5.  实现不需要增强的方法,方法体重调用成员变量存放的其他实现类对应的方法
接口A
package
cn.zbx.test.method1; public interface Car { public void run(); public void stop(); }
实现类B
package
cn.zbx.test.method1; public class QQCar implements Car { @Override public void run() { // TODO Auto-generated method stub System.out.println("像蜗牛一样跑起来"); } @Override public void stop() { // TODO Auto-generated method stub System.out.println("用脚当刹车"); } }
装饰者代理类C
package
cn.zbx.test.method1; public class GZCar implements Car { private Car qq; public GZCar(Car car) { this.qq = car; } @Override public void run() { // TODO Auto-generated method stub qq.run(); System.out.println("像蜗牛一样跑起来"); System.out.println("5秒破百"); } @Override public void stop() { // TODO Auto-generated method stub qq.stop(); } }

 

posted @ 2018-04-03 17:17  木东木容  阅读(85)  评论(0编辑  收藏  举报