代理模式

作者: 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来定制规则(比如售价...),对部分内容做修改.

相关文章

  • 设计模式

    单例模式 模板方法模式 工厂模式 代理模式 静态代理 JDK动态代理

  • 设计模式

    单例模式 代理模式 静态代理 jdk动态代理 cglib动态代理 工厂模式 适配器模式 建造者模式 观察者模式

  • kube-proxy的3种模式

    userspace代理模式 iptables代理模式 IPVS代理模式 https://kubernetes.io...

  • 第4章 结构型模式-代理模式

    一、代理模式简介 二、代理模式3个角色 三、代理模式的优点 四、代理模式的实例(游戏代练)

  • 理解代理模式

    原创博客地址 简介 代理模式,也叫做委托模式,分为:静态代理动态代理 代理模式也是平时比较常用的设计模式之一,代理...

  • 结构型 代理模式(文末有项目连接)

    1:什么是代理模式 2:没用代理模式时的实例 3:使用代理模式将其解耦(静态代理) 3:使用代理模式将其解耦(动态...

  • 设计模式-动态代理模式

    之前介绍了代理模式,大家也都了解了代理模式,不过之前介绍的代理模式是静态代理,静态代理什么意思?静态代理指的是代理...

  • 代理模式

    一、什么是代理模式 代理模式(Proxy pattern):代理模式又叫委托模式,是为某个对象提供一个代理对象,并...

  • 设计模式之代理模式(Proxy模式)

    代理模式的引入 代理模式的实例程序 代理模式的分析 代理模式的引入 Proxy是代理人的意思,指的是代替别人进行工...

  • Java设计模式之代理模式

    Java设计模式之代理模式 代理模式 静态代理 动态代理 为什么需要代理 通过代理,我们能够不用知道委托人是谁,而...

网友评论

    本文标题:代理模式

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