版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/txksnail/article/details/81211235
不断学习是为了有一天可以蜕变成自己想成为的人!
1、代理模式介绍
代理模式也成为委托模式,是结构性设计模式。
代理在生活中非常常见,举个例子,大家生活中经常听说到运营代理商,我们去运营代理商哪儿跟他说充话费,然后运营代理商一顿操作,给我们充上了话费。实际上真正给我们充话费的是运营商而不是运营代理商,运营代理商只是帮助我们访问了运营商,这就是一个典型的代理模式!
2、代理模式的定义
为其他对象提供一种代理以控制对真实对象的访问。
理解:代理模式核心是控制访问。
3、代理模式使用场景
1、当我们无法直接访问一个对象的时候,可以使用代理间接访问
2、不想让某个对象被直接访问
4、代理模式UML类图
代理模式中角色:
1、被代理者抽象
UML中的Subject
2、被代理者
UML图中的RealSubject
3、代理者
UML图中的Proxy
5、代理模式的示例
//被代理类抽象
public interface IMobileOperator {
/**
* 充值
*
* @param count 充值的数量
*/
void recharge(int count);
}
//被代理类
public class MobileOperator implements IMobileOperator {
@Override
public void recharge(int count) {
System.out.println("运营商充值金额:"+count);;
}
}
//代理类
public class Proxy implements IMobileOperator {
private IMobileOperator mobileOperator;
public Proxy(IMobileOperator mobileOperator) {
this.mobileOperator = mobileOperator;
}
@Override
public void recharge(int count) {
mobileOperator.recharge(count);
}
}
//调用类
public class Client {
public static void main(String[] args) {
IMobileOperator mobileOperator = new MobileOperator();
Proxy proxy = new Proxy(mobileOperator);
//代理类来对真实对象进行访问
proxy.recharge(50);
}
}
6、Android中代理模式的使用
被代理类抽象:IActivityManager
被代理类:ActivityManagerNative是一个抽象类,实现是ActivityManagerService
所以被代理类是ActivityManagerService
代理类:ActivityManagerProxy
7、代理模式的优缺点
代理模式应用广泛,几乎没有什么缺点