建造者模式是將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
<喎?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(" "); } } }
最後,運行一下,裝冰箱成功。。。