程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 建造者模式(Builder)

建造者模式(Builder)

編輯:關於C語言

建造者模式是將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。


模式結構

\


<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPC9ibG9ja3F1b3RlPgo8L2Jsb2NrcXVvdGU+CjxwPiA8L3A+CjxoMj69qNTs1d/Eo8q9tcS6w7Smo7o8L2gyPgo8cD48L3A+CjxwPiAgICAgIL2o1OzV38Sjyr2/ydLUvavSu7j2svrGt7XExNqyv7Htz/PT67L6xre1xMn6svq5/bPMt9a47r+qwLSjrLTTtvi/ydLUyrnSu7j2vajU7Ln9s8zJ+rPJvt/T0LK7zay1xMTasr+x7c/ztcSy+sa3ttTP86GjyOe5+87Sw8fTw8HLvajU7NXfxKPKvaOsxMfDtNPDu6e+zda70OjSqr2o1Oy1xMDg0M2+zb/J0tS1w7W9y/zDx6Ostvi+38zlvajU7LXEuf2zzLrNz7i92r7NsrvQ6NKq1qq1wMHLoaM8L3A+CjxwPjxicj4KPC9wPgo8aDI+us7Kscq508O9qNTs1d/Eo8q9o788L2gyPgo8cD4gICAgICAg1vfSqsrH08PT2rS0vajSu9CpuLTU07XEttTP86Os1eLQqbbUz/PE2rK/ubm9qLzktcS5udTsy7PQ8s2os6PKx87Itqi1xKOstau21M/zxNqyv7XEubm8/s2os6PD5sHZ18W4tNTTtcSx5LuvoaM8L3A+CjxwPjxicj4KPC9wPgo8aDE+yr7A/TwvaDE+CjxwPjwvcD4KPHA+ICAgIMSzxOqjrNbQ0eu158rTzKi+2bDstcS0ur3awaq7ts3tu+HJz7XE0ru49tChxrejrNPQ1eLR+dK7uPbH6b3ao7rLzrWktaS4+NXUsb7JvbP2uPbM4rb5LS3I57rOsNG088/z17C1vbH5z+TA76Os1dSxvsm9w7u08MnPoaPLzrWktaS45svf1dSxvsm9serXvLTwsLijurXa0ruyvbDRsfnP5MPFtPK/qqOstdq2/rK9sNG088/zt8W9+Milo6y12sj9sr2w0bH5z+TDxbnYyc+hozwvcD4KPHA+PGJyPgo8L3A+CjxwPiAgIAo8aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140321/20140321125711267.jpg" alt="\">


同理,我們可以按照這個步驟,向冰箱裡裝其他東西:比如,過期的牛奶,吃剩的Pizza,甚至還可以模仿俄羅斯套娃,裝個冰箱(冰箱的使用詳見冰箱使用手冊,I bet 冰箱絕對不是這樣用的。。)。。下面來看一下裝大象的代碼:


namespace 把大象裝冰箱
{
    /*首先抽象出一個建造過程的類,將把“東西裝在冰箱”
     * 這個過程給穩定住。就是說,不管向冰箱裡面裝什麼東西
     * 都得按照這個步驟來,一步都不能丟。*/
    abstract class PutIntoFridge
    {
       
        public abstract void OpenFridge();
        public abstract void PutInto();
        public abstract void CloseFridge();
 
    }

    /*寫一個把大象裝冰箱的類,然後讓這個類去繼承PutIntoFridge
     * 在這個類裡面,給出如何把大象裝冰箱的具體實現。*/
    class PutElephantIntoFri : PutIntoFridge
    {
        private string name;

        public PutElephantIntoFri(string name)
        {
            this.name = name;
        }

        public override void OpenFridge()
        {
            Console.WriteLine("打開了冰箱門~~");

        }

        public override void PutInto()
        {
            Console.WriteLine("把 {0} 裝進冰箱。", name);
            
        }

        public override void CloseFridge()
        {
            Console.WriteLine("把冰箱門關上了。");
        }
 
    }


    /*指揮者:用來指揮把東西裝冰箱這個過程,用它來隔離用戶與
     * 建造過程的關聯。*/
    class Director
    {
        private PutIntoFridge pif;

        //構造的時候指明要實現把什麼東西裝冰箱
        public Director(PutIntoFridge pif)
        {
            this.pif = pif;
        }

        /*寫一個把大象裝冰箱的過程,用以隱藏具體的把大象裝冰箱的過程
         * 使用時只需調用這一個方法就行。*/
        public void CreatePutIntoFif()
        {
            pif.OpenFridge();
            pif.PutInto();
            pif.CloseFridge();
        }
 
    }


    class Program
    {
        static void Main(string[] args)
        {
            PutElephantIntoFri peif = new PutElephantIntoFri("小象");
            Director director = new Director(peif);

            director.CreatePutIntoFif();

            Console.WriteLine(" ");


        }
    }
}

最後,運行一下,裝冰箱成功。。。






  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved