代理模式的基本定义:为其他对象提供一种代理已控制对这个对象的访问,代理祈祷中介的作用,可以去掉功能服务或增加额外的服务。
常见的几种代理模式如图:
下边我们详细介绍智能引用代理
我们通过一个例子了解静态代理和动态代理
静态代理类的实现
创建一个Car接口
public interface Move { public void run(); } |
创建一个Car实体
public class Car implements Move { public void run() { System.out.println("汽车行驶中。。。"); } } |
用继承的方式实现静态代理
public class Car1 extends Car { public void run(){ System.out.println("汽车开始行驶"); super.run(); System.out.println("汽车行驶结束"); } } |
用聚合的方式实现静态代理
public class Car2 implements Move { private Car car; public Car2(Car car){ this.car=car; } public void run() { System.out.println("汽车开始行驶"); car.run(); System.out.println("汽车行驶结束"); } } |
测试类
public class Test { public static void main(String arg[]){ //使用继承方法实现静态代理 Move car=new Car1(); car.run(); //使用聚合方式实现静态代理 Car c=new Car(); Move ca=new Car2(c); ca.run(); } } |
JDK动态代理类的实现