文章出處

// 客戶端調用
    class Client
    {
        static void Main(string[] args)
        {
            // 創建一個代理對象并發出請求
            Person proxy = new Friend();
            proxy.BuyProduct();
            Console.Read();
        }
    }

    // 抽象主題角色
    public abstract class Person
    {
        public abstract void BuyProduct();
    }

    //真實主題角色
    public class RealBuyPerson : Person
    {
        public override void BuyProduct()
        {
            Console.WriteLine("幫我買一個IPhone和一臺蘋果電腦");
        }
    }

    // 代理角色
    public class Friend:Person
    {
        // 引用真實主題實例
        RealBuyPerson realSubject;

        public override void BuyProduct()
        {
            Console.WriteLine("通過代理類訪問真實實體對象的方法");
            if (realSubject == null)
            {
                realSubject = new RealBuyPerson();
            }

            this.PreBuyProduct();
            // 調用真實主題方法
            realSubject.BuyProduct();
            this.PostBuyProduct();
        }

        // 代理角色執行的一些操作
        public void PreBuyProduct()
        {
            // 可能不知一個朋友叫這位朋友帶東西,首先這位出國的朋友要對每一位朋友要帶的東西列一個清單等
            Console.WriteLine("我怕弄糊涂了,需要列一張清單,張三:要帶相機,李四:要帶Iphone...........");
        }
        
        // 買完東西之后,代理角色需要針對每位朋友需要的對買來的東西進行分類
        public void PostBuyProduct()
        {
            Console.WriteLine("終于買完了,現在要對東西分一下,相機是張三的;Iphone是李四的..........");
        }
    }

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()