- 目的: 为其他对象提供一种代理以控制对这个对象的访问
- 客户端不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象
- 代理模式要结合及具体的框架去实现的
- 代理类与委托类实现同一接口
- 在委托类中实现功能,在代理类的方法中引用委托类的同名方法
- 在外部类调用委托类某个方法时,直接以接口指向代理类的实例,这正是代理的意义所在:屏蔽
例子:
代理类和委托类实现的同一个接口:
package proxy;
//明星
public interface Star {
//功能:签名
public void seal();
}
委托类:
package proxy;
public class StarImpl implements Star{
@Override
public void seal() {
System.out.println("范冰冰");
}
}
代理类:
package proxy;
public class StarProxy implements Star{
@Override
public void seal() {
new StarImpl().seal();
}
}
测试:
package proxy;
public class Xiaoming {
public static void main(String[] args) {
Star star = new StarProxy();
star.seal();//范冰冰
}
}