转自http://blog.sina.com.cn/s/blog_89d90b7c0101803g.html

代理模式:代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 
   代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。
    应用场景:例如:假设有一组对象都实现同一个接口,实现同样的方法,但这组对象中有一部分对象需要有单独的方法,传统的笨办法是在每一个应用端都加上这个单独的方法,但是代码重用性低,耦合性高。如果用代理的方法则很好的解决了这个问题,
    其实从字面解释会更加容易,很容易就想到代理商:货物的所有权属于厂家,而代理商只是帮助厂家进行一些销售行为等,当然也可以有自己的行为,比如下面的例子中,商家就可以单独的去给商品做销售活动,而跟厂家没有直接关系。

using UnityEngine;
using System.Collections; // 定义一个商品行为接口 //
interface Goods
{
// 定价 //
void Pricing();
// 销售 //
void Sale();
}
// 然后定义厂家 //
class AFactory : Goods
{
public void Pricing()
{
Debug.Log("厂家给商品定价啦..................");
}
public void Sale()
{
Debug.Log("我去,厂家直销啊,这得多便宜啊...................");
}
}
// 再来定义商家,嗯 就是代理商 //
class Shops : Goods
{
// 定义一个商品接口 //
private Goods goods;
// 构造方法,传人带有商品行为接口的类 //
public Shops(Goods goods)
{
this.goods = goods;
} public void Pricing()
{
Debug.Log("商家使用厂家的定价,当然商家也可以在一定范围内调价,比如下面的方法可以留出参数..................");
this.goods.Pricing();
}
public void Sale()
{
Debug.Log("商家开始销售啦,俺帮厂家销售,自己还得钱,真爽....................");
this.goods.Sale();
}
}
// 欧也,下面代理商就可以开始工作了 //
public class Proxy : MonoBehaviour
{
void Start()
{
Shops shops = new Shops(new AFactory());
shops.Pricing();
shops.Sale();
}
}

总结一下,代理模式主要是用了面对对象的多态性。对于某种共同的行为,代理类是接活,幕后主使人是被代理类,完成人家分配的任务就会有好的报酬,可以知道,他们是同穿一条裤子,你能做啥我能做啥都清楚的很,因为有同一个行为接口。O(∩_∩)O

开发设计模式(四) 代理模式(Proxy Pattern)的更多相关文章

  1. 乐在其中设计模式(C#) - 代理模式(Proxy Pattern)

    原文:乐在其中设计模式(C#) - 代理模式(Proxy Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 代理模式(Proxy Pattern) 作者:webabcd 介绍 为 ...

  2. 二十四种设计模式:代理模式(Proxy Pattern)

    代理模式(Proxy Pattern) 介绍为其他对象提供一个代理以控制对这个对象的访问. 示例有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这个对 ...

  3. c#设计模式之代理模式(Proxy Pattern)

    引言 代理这个词语,大家在现实世界已经频繁的接触过,例如火车站代理售票点,因为这些代理售票点的存在,我们不必要去火车站的售票处就可以查询或者取到火车票.代理点本身是没有能力生产车票的,我们在代理处享受 ...

  4. 乐在其中设计模式(C#) - 代理模式(Proxy Pattern)【转】

    介绍 为其他对象提供一个代理以控制对这个对象的访问. 示例 有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这个对象的访问. MessageModel ...

  5. 设计模式系列之代理模式(Proxy Pattern)——对象的间接访问

    说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...

  6. 设计模式 - 代理模式(proxy pattern) 未使用代理模式 具体解释

    代理模式(proxy pattern) 未使用代理模式 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 部分代码參考: http://blog.csdn. ...

  7. 代理模式(Proxy pattern)

    代理模式(proxy pattern):作用:为其他对象提供一种代理,以控制对这个对象的访问.代理对象在客户端对象和目标对象之间起中介的作用. 代理模式涉及到的角色: 抽象角色:声明真实对象和代理对象 ...

  8. 设计模式——代理模式(Proxy Pattern)

    代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. UML图: 模型设计: Subject类: package com.cnblog.clarck; /** * Subject 类 ...

  9. 大熊君说说JS与设计模式之------代理模式Proxy

    一,总体概要 1,笔者浅谈 当我们浏览网页时,网页中的图片有时不会立即展示出来,这就是通过虚拟代理来替代了真实的图片,而代理存储了真实图片的路径和尺寸,这就是代理方式的一种. 代理模式是比较有用途的一 ...

  10. 13.代理模式(Proxy Pattern)

    using System; namespace Test { //抽象角色:声明真实对象和代理对象的共同接口. //代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象, //同时代理 ...

随机推荐

  1. Overview & Change Log

    Overview & Change Log Nova Framework is a PHP 5.5+ MVC Framework. It's designed to be lightweigh ...

  2. PHP在ubuntu中编译安装

    关于怎么获取php源码和解压就不再说了. 编译的参数为: ./configure --prefix=/opt/php --with-bz2 --with-mcrypt --with-mhash --w ...

  3. Spring 的@Controller 和@RestController的区别

    @RestController Spring 4.0中新增的特性 @RestController 继承自 @Controller,相当于@ResponseBody + @Controller   1. ...

  4. Java基本排序

    长度为N的数组升序排序 一,冒泡排序 public class BubbleSort { private double[] data; public BubbleSort(double[] data) ...

  5. 服务器的SVN项目版本较低,check out 下来后报错

    check out下来后报错提示: svn: E155036: Please see the 'svn upgrade' commandsvn: E155036: Working copy '/hom ...

  6. 问题:loadrunner录制event为0

     loadrunner录制问题问题1:录制时出现event为0的状况 解决办法: 1.如果是IE浏览器,把启用第三方浏览器扩展*钩给去掉    2使用火狐浏览器,这个就比较好,在lr启动的时候就去勾选 ...

  7. xilinx 网站资源导读

    [经验整理.01]Xilinx网站资源导读 ISE11版 标签:  ISE  Xilinx  入门  资源  2009-09-01 20:41 序 虽然自己也曾想过,但如果不是向农要求,把曾经写过的文 ...

  8. cookie管理中的一些细节,转的

    1.domain表示的是cookie所在的域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为www.jb51.net.而跨域访问,如域A为t1 ...

  9. procedure的over(partition by ) function

    转载自:http://www.2cto.com/database/201310/249722.html oracle的分析函数over(Partition by...)   Sql代码       o ...

  10. Dojo Tree设置默认选中项并且获得它

    先上用来生成Tree的JSON数据 [    { "id": "Root", "name": "资源目录" },    ...