Android设计模式------代理模式
来源:互联网 发布:解析json为格式化 编辑:程序博客网 时间:2024/06/15 13:58
转载请声明地址:http://blog.csdn.net/bxllove/article/details/65938416
1.简介
《代理模式》 在android 编程开发中是非常重要的设计模式之一 那么什么是代理模式呢? 说到代理 我们可以联想一下这个词汇在现实生活中都有谁(人或物)所充当着这种角色呢,中介,律师,快递 ..... 凡是担任第三方并服务于自己的都可以说是代理。那么在java 中所谓的代理模式和这个差不多,因为一般编程语言的设计模式都是仿着现实生活中的一些人的常为形态所设计的,所以理解起来并不是很难。
2.代理模式的定义
通过受委托代表某个对象所进行展开的活动向其它对象共开访问交流。
3.代理模式UML
4.代理模式的种类:
代理模式有两种 1.静态代理 2.动态代理 那么这两种又有什么区别呢? 动态模式通过反射机制生成被代理者的对象 在代理阶段不需要知道被代理的对象是谁,当执行代码时才进行代理的对象的传入 静态相反。
5.1静态模式
第一步:
public abstract class AbsShoping {public abstract void buy();}第二步:实例化子类并发出意向 (想买机票但不愿出门)
public class PersionShop extends AbsShoping{@Overridepublic void buy() {System.out.println("买机票");}}第三步:代理帮忙买机票 但要持有被代理者的对象(身份证PersionShop mpShop)
public class ProxyShoping extends AbsShoping {private PersionShop mpShop;public ProxyShoping(PersionShop mpShop) {this.mpShop = mpShop;}@Overridepublic void buy() {mpShop.buy();}}第四步:
public class Client {public static void main(String[] args) {PersionShop mpShop = new PersionShop();ProxyShoping proxy = new ProxyShoping(mpShop);proxy.buy();}}运行结果:买机票
5.2动态模式
第一步:
public interface AbsShoping {public abstract void buy();}第二步:
public class PersionShop implements AbsShoping{@Overridepublic void buy() {System.out.println("买机票");}}
第三步:和静态模式的唯一区别就在这了静态模式代理者实现的是抽象的购物而这里需要实现InvocationHandler
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class ProxyShoping implements InvocationHandler {private AbsShoping ob;private AbsShoping proxy;//该引用将指向被代理的类;public AbsShoping getProxy() {return proxy;}public ProxyShoping(AbsShoping ob) {this.ob = ob;// 动态构造一个代理者this.proxy = (AbsShoping) Proxy.newProxyInstance(AbsShoping.class.getClassLoader(),new Class<?>[] { AbsShoping.class }, this);}//调用被代理的类将在invoke方法执行@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {Object result = method.invoke(ob, args);return result;}}
第四步:
public class Client {public static void main(String[] args) {AbsShoping proxy = new ProxyShoping(new PersionShop()).getProxy();proxy.buy();}}运行结果:买机票
阅读全文
1 0
- Android设计模式------代理模式
- Android设计模式-代理模式
- Android设计模式------代理模式
- android设计模式之代理模式
- Android设计模式之代理模式 Proxy
- Android设计模式之代理模式 Proxy
- Android设计模式之代理模式 Proxy
- Android设计模式应用-代理模式
- android 设计模式之代理模式
- Android设计模式之代理模式 Proxy
- Android设计模式(十七)-代理模式
- Android设计模式之代理模式 Proxy
- Java/Android设计模式<三> 代理模式
- Android 设计模式之代理模式
- 设计模式--【代理模式】
- 设计模式:代理模式
- 设计模式--代理模式
- 设计模式---代理模式
- Openstack之搭建总结
- 数据库三范式
- Java链表
- eclipse idea 常用的一些快捷键大全
- 38. Struts2_使用声明式验证
- Android设计模式------代理模式
- 区分旅客国籍
- 苏苏请参考:关键词一览推荐表
- 51nod 1278 相离的圆
- 记录一下“halt ,reboot ,init,shutdown的区别”
- XTU1254 Blance 如何实现称出1∼n 克的物品,请问最少需要几颗砝码?
- CodeForces 794D. Labelling Cities
- Java比较器Comparator接口
- ajax的post提交参数长度超出限制的解决办法