设计模式(6):代理模式

 代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

   代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。

《设计模式(6):代理模式》

以下代码来自《大话模式》一书。   IGiveGift

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

namespace Proxy
{
    interface IGiveGift
    {
        void GiveDolls();
        void GiveFlowers();
        void GiveChocolate();
    }
}

 

SchoolGirls:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Proxy
 7 {
 8     class SchoolGirl
 9     {
10         private string _name;
11         public string Name
12         {
13             set { _name = value; }
14             get { return _name; }
15         }
16     }
17 }

 

Pursuit

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

namespace Proxy
{
    class Pursuit:IGiveGift
    {
        private SchoolGirl _mm;
        public Pursuit(SchoolGirl mm)
        {
            _mm = mm;
        }
        public void GiveDolls()
        {
            Console.WriteLine(_mm.Name+"送你洋娃娃");
        }
        public void GiveFlowers()
        {
            Console.WriteLine(_mm.Name+"送你鲜花");
        }
        public void GiveChocolate()
        {
            Console.WriteLine(_mm.Name+"送你巧克力");
        }

    }
}

 

Proxy

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

namespace Proxy
{
    class Proxy:IGiveGift
    {
        private Pursuit _gg;
        public Proxy(SchoolGirl mm)
        {
            _gg = new Pursuit(mm);
        }
        public void GiveDolls()
        {
            _gg.GiveDolls();
        }
        public void GiveFlowers()
        {
            _gg.GiveFlowers();
        }
        public void GiveChocolate()
        {
            _gg.GiveChocolate();
        }

    }
}

 

Program

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

namespace Proxy
{
    class Program
    {
        static void Main(string[] args)
        {
            SchoolGirl z = new SchoolGirl();
            z.Name = "Flowerowl";
            Proxy proxy = new Proxy(z);
            proxy.GiveDolls();
            proxy.GiveFlowers();
            proxy.GiveChocolate();

            Console.ReadLine();
        }
    }
}

 

    原文作者:夜阑
    原文地址: http://www.cnblogs.com/lazynight/archive/2012/05/14/2500663.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞