5.大话设计模式-代理模式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DesignModel
{
    public class Proxy:IAction
    {
        ZQZ zzz = null;
        public Proxy(ZQZ mm)
        {
            zzz = mm;
        }

        public void SendFlower()
        {
            zzz.SendFlower();
        }

        public void SendCake()
        {
            zzz.SendCake();
        }
    }

    public interface IAction
    {
        void SendFlower();
        void SendCake();

    }

    public class ZQZ : IAction
    {
        public string myname { set; get; }

        public void SendFlower()
        {
            Console.WriteLine(myname+"送花");
        }

        public void SendCake()
        {
            Console.WriteLine(myname+"送蛋糕");
        }
    }
}

客户端调用:

1  ZQZ zzz = new ZQZ();
2             zzz.myname = "朱建军";
3             Proxy p = new Proxy(zzz);
4             p.SendFlower();
5             p.SendCake();
View Code

代理模式分类:

1. 远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。

例如: webservice 服务

 

2. 虚拟代理, 是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真是对象。

  浏览器当中是用代理模式来优化下载页面的

3.安全代理

  用来控制真实对象访问时的权限。

4.智能指引

是指调用真实对象时,代理处理另外一些事。

posted @ 2014-07-22 22:44  Mountains  阅读(180)  评论(0编辑  收藏  举报