1.什么是代理模式
Proxy模式又叫做代理模式,是构造型的设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。
代理是指和被代理对象拥有相同接口的的类,客户端必须通过代理对象和被代理对象进行交互
2.代理模式的作用
在实际应用中我们可以对某个类进行拓展,但是又不想改变代码,代理模式就是在不改变被代理对象源码的情况下,对被代理对象进行拓展。
3.代理模式的理解
举一个例子,厂家生产方便面生产后要卖方便面,如果等消费者来买的话,就会卖的很慢,产生积压,而且也没有办法自己卖向全国,这样的话会影响自己生产,所有厂家就找到了代理,由代理和消费者进行交互,这样厂商只需要和代理商进行交互就可以了,这样很方便。
4.代码示例(把白酒变成鸡尾酒)
package 代理对象;
//定义共同接口酒,定义方法名
public interface Wine {
public void drink();
}
package 代理对象;
//被代理对象白酒
public class Baijiu implements Wine{
@Override
public void drink() {
System.out.println("白酒");
}
}
package 代理对象;
//代理对象,对白酒进行拓展
public class Proxy implements Wine{
private Baijiu baijiu;//把被代理对象传入
//创建代参构造函数
public Proxy(Baijiu baijiu) {
this.baijiu = baijiu;
}
@Override
//重写dirnk方法对被代理对象功能进行拓展
public void drink() {
System.out.println(“加点糖”);
this.baijiu.drink();
System.out.println(“加点果汁”);
System.out.println(“鸡尾酒好了”);
}
}
5.静态代理和动态代理
静态代理是指预先确定了代理与被代理者的关系。在编译期就确定了代理类和被代理类的关系,
动态代理模式是代理类是在程序的运行期间由JVM根据反射等机制动态生成,所以不存在代理类的字节码文件,代理类和委托类的关系是在程序运行时确定的。