四、代理模式(Proxy Pattern)

using System;


namespace ProxyPattern
{
    //代理模式,概念:为其他对象提供一种代理,以控制对这个对象的访问。
    //说明:
    //代理模式其实就是现实生活中的中介模式,买主和卖主之间不直接接触通过中间人来达到交易的目的。
    //最常见的就是房屋中介,房主由于种种原因不能自己去出售自己的房子,于是委托中介代理销售。


    //张先生委托中介小王来帮忙出售自己的房产。


    /// <summary>
    /// 抽象出张先生和中介小王的共同接口
    /// </summary>
    interface ISaleHouse
    {
        /// <summary>
        /// 卖房子
        /// </summary>
        void SaleHouse();
    }


    /// <summary>
    /// 张先生
    /// </summary>
    class MrZhang : ISaleHouse
    {


        public void SaleHouse()
        {
            Console.WriteLine("出售房产!");
        }
    }


    /// <summary>
    /// 中介小王
    /// </summary>
    class ProxyWang : ISaleHouse
    {
        MrZhang zhang;


        public ProxyWang()
        {
            if(zhang==null)
            {
                zhang = new MrZhang();
            }
        }


        /// <summary>
        /// 中介帮助张先生出售房产
        /// </summary>
        public void SaleHouse()
        {
            zhang.SaleHouse();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //想买房子的人,找中介小王就可以了,不需要和张先生联系。
            ProxyWang wang = new ProxyWang();
            //中介小王代理销售张先生的房产
            wang.SaleHouse();
            Console.Read();
        }
    }


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

猜你喜欢

转载自blog.csdn.net/xiangwenfly/article/details/54345903