代理模式

作者: ziabo_yu | 来源:发表于2016-12-15 09:38 被阅读0次
    代理模式(Proxy)概念:

    为其他对象提供一种代理以控制对这个对象的访问.
    --------------------------

    代理模式应用:

    1.远程代理,也就是为一个对象在不同的地址空间提供局部代表.这样可以隐藏一个对象存在于不同地址空间的事实.
    2.虚拟代理,是根据需要创建开销很大的对象.通过它来存放实例化需要很长时间的真实对象.
    3.安全代理,用来控制真实对象访问时的权限,一般用于对象应该有不同的访问权限的时候
    4.智能指引,是指当调用真实的对象时,代理处理另外一些事.

    我这里举的例子结构如下:
    >首先有一个总经销商:LocalProxy
    >然后我们需要一个低级经销商GoodsProxy
    >我们还需要一个柜台去替低级经销商代理商品摆放ShopProxy

    代指总经销商,里面提供了很多种物品购买的方法,这些商品都属于总经销商,总经销商只提供接口进货,他并不知道你卖多少钱,当然他也不是很关心你卖给谁 public interface GoodsProxy { //得到食物 void getFood(); //得到生活用品 void getSupplies(); //得到娱乐用品 void getToy(); }

    上面的是"中间人"类,他只提供接口做商品代理,商品不用他自己造

    普通经销商类,指的实代理过程中的中间人,价格是由他来定的 public class LocalProxy implements GoodsProxy{ private final String TAG = LocalProxy.class.getSimpleName(); private String name; private double price; public LocalProxy(String name,double price){ this.name = name; this.price = price; } @Override public void getFood() { Log.d(TAG, "看到了"+name +"售价:"+ price +"打算购买!!"); } @Override public void getSupplies() { Log.d(TAG, "看到了"+name +"售价:"+ price+"打算购买!!"); } @Override public void getToy() { Log.d(TAG, "看到了"+name +"售价:"+ price+"打算购买!!"); } }

    这个注释写的很显而易见了大意就是普通经销商定的价格

    类似于普通经销商的柜台,顾客一去就能看到商品的价格 public class ShopProxy implements GoodsProxy{ private final String TAG = ShopProxy.class.getSimpleName(); private GoodsProxy mGoodsProxy; public ShopProxy(GoodsProxy goodsProxy){ this.mGoodsProxy = goodsProxy;} @Override public void getFood() { Log.d(TAG, "searching"); mGoodsProxy.getFood(); Log.d(TAG, "search finished"); } @Override public void getSupplies() { Log.d(TAG, "searching"); mGoodsProxy.getSupplies(); Log.d(TAG, "search finished"); } @Override public void getToy() { Log.d(TAG, "searching"); mGoodsProxy.getToy(); Log.d(TAG, "search finished"); }
    这里面实际执行的是传进来的抽象类的实现类调用的方法,也就是普通经销商定价的一个过程,具体看调用

    private GoodsProxy mGoodsProxy;//创建一个普通经销商的对象 mGoodsProxy = new ShopProxy(new LocalProxy("清扬洗发水", 23)); Log.d("ProxyActivity", "正在思考要买什么用的?"); mGoodsProxy.getSupplies(); Log.d("ProxyActivity", "买了清扬洗发水");

    log日志显示如下图

    Paste_Image.png

    可以看到中间人代理很成功,GoodsProxy通过代理商把商品卖出去了,这就是代理模式的一种思想,提供者只负责提供你怎么用用在哪儿他并不关心,用户也只在乎到手的产品,他不会关心产品到底是哪儿产的,出厂价多少,通过代理ShopProxy来定制规则(比如售价...),对部分内容做修改.

    相关文章

      网友评论

        本文标题:代理模式

        本文链接:https://www.haomeiwen.com/subject/svoimttx.html