一句话定义
为其他对象提供代理方式控制这个对象的访问。
使用场景
1. 不能或不想直接访问某个对象
2. 对一个类的访问增加控制
实现要点
1. 代理对象和代理实现同一个接口
2. 添加中间层进行控制
情景假设
代理上网,包含真实上网的对象和代理上网者。
实现步骤
1. 共同接口,包含共同基本功能
/**
* 上网接口
*
* @author fengzhen
* @version 1.0, 2017/3/30
*/
public interface Surfing {
/**
* 上网接口
*/
void surfing();
}
2. 具体的代理对象,实现接口
import android.util.Log;
/**
* 真正的上网节接口,实现上网接口
*
* @author fengzhen
* @version version, 2017/3/30
*/
public class RealSurfing implements Surfing{
@Override
public void surfing() {
Log.i("info", "surfing: == 真的在上网");
}
}
3. 代理,实现接口
import android.util.Log;
/**
* 代理上网者 实现上网接口
* 拥有真实对象的引用,进行操作
*
* @author fengzhen
* @version version, 2017/3/30
*/
public class ProxySurfing implements Surfing {
private Surfing mRealSurfing;
/**
* 绑定真实的上网者
*/
public ProxySurfing(Surfing mRealSurfing) {
this.mRealSurfing = mRealSurfing;
}
@Override
public void surfing() {
Log.i("info", "surfing: == 代理上网处理中...");
mRealSurfing.surfing();
}
}
4. 通过代理访问
RealSurfing realSurfing = new RealSurfing();
ProxySurfing proxySurfing = new ProxySurfing(realSurfing);
proxySurfing.surfing();
5. 结果展示
I/info: surfing: == 代理上网处理中...
I/info: surfing: == 真的在上网