代理模式(Proxy)的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。(来自百度百科)
1.代理模式的UML图
2.代理模式的使用场合
当无法或不想直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来简介访问,为了保证客户端使用的透明性,委托对象和代理对象需要实现相同的接口。
3.通用模式代码
3.1 抽象方法或接口
public abstract class Subject{
//一个普通的业务方法
public abstract void visit();
}
/**
* 实现抽象主题类的真实主题类
*/
public class RealSubject extends Subject{
@Override
public void visit(){
Log.i("zsf","Real Subject");
}
}
3.3 代理类
/**
* 代理类
*/
public class ProxySubject extends Subject{
private RealSubject mSubject;//持有真实主题的引用
public ProxySubject(RealSubject realSubject){
this.mSubject = realSubject;
}
@Override
public void visit(){
//通过真实主题引用的对象调用真实主题中的逻辑方法
mSubject.visit|();
}
}
/**
* 客户端类
*/
public class ProxyTest{
public static void main(String[] args){
//构造一个真实主题对象
RealSubject realSubject = new RealSubject();
//通过一个真实主题对象构造一个代理对象
ProxySubject proxy = new ProxySubject(realSubject);
//调用代理的相关方法
proxy.visit();
}
}