版权声明:本文为博主原创文章,未经博主同意不得转载。
https://blog.csdn.net/Sailingthink/article/details/28269839
代理模式
1.意图:为其它对象提供一种代理以控制对这个对象的訪问。
2.适用性:
远程代理;虚代理。保护代理;智能引用;
Android源代码中用到了大量的代理设计模式,比方Context的设计,Binder的设计等。
以下是Context的类图。以此说明代理设计模式的特点:
代理设计模式的要点是,代理者实现了被代理的所有接口。所以他们应该有共同的功能接口。在本例中。ContextWarpper是一个包装类,它继承了context类。实现了其抽象函数。
可是它把详细的实现动作托付给了其成员变量mBase所引用的Context来运行。
而mBase的真实对象实际上是ContextIml。
Activity,Service,Application都是ContextWarpper的子类。
在实际编程中大量的操作都要借助Context来完毕,比方要通过Uri操作数据库,再比方要发送Intent。在分析源代码的时候,知道了Context的代理模式,能高速准确的定位代码运行的路径。