1. 程式人生 > >設計模式-建造者模式

設計模式-建造者模式

設計模式 建造者模式

//產品 public abstract class Food { public List<string> list = new List<string>(); public abstract void show(); } //辣椒炒肉 public class lajiaochaorou: Food { public override void show() { Console.WriteLine("我已經:"); foreach (var item in list) { Console.WriteLine(item); } Console.WriteLine("我變成了一盤香噴噴的辣椒炒肉"); Console.ReadLine(); } } public class hongshaorou: Food { public override void show() { Console.WriteLine("我已經:"); foreach (var item in list) { Console.WriteLine(item); } Console.WriteLine("我變成了一盤香噴噴的紅燒肉"); Console.ReadLine(); } } //制造產品 public abstract class MakeFood { public abstract void addYan(); public abstract void addYou(); public abstract void addFood(); public abstract Food getResult(); } public class MakeLaJiaoChaoRou : MakeFood { private lajiaochaorou ljcr = new lajiaochaorou(); public override void addFood() { ljcr.list.Add("加入了辣椒和肉"); } public override void addYan() { ljcr.list.Add("撒上了1毫克鹽"); } public override void addYou() { ljcr.list.Add("倒入了2毫升油"); } public override Food getResult() { return ljcr; } } public class MakeHongShaoRou : MakeFood { private hongshaorou ljcr = new hongshaorou(); public override void addFood() { ljcr.list.Add("加入了醬油和肉"); } public override void addYan() { ljcr.list.Add("撒上了3毫升鹽"); } public override void addYou() { ljcr.list.Add("倒入了5毫升油"); } public override Food getResult() { return ljcr; } } //指揮者 public class Director { public Food createFood(MakeFood mk) { mk.addYou(); mk.addYan(); mk.addFood(); return mk.getResult(); } } //前端 static void Main(string[] args) { Director d = new Director(); MakeFood md = new MakeLaJiaoChaoRou(); Food c =d.createFood(md); MakeFood md2 = new MakeHongShaoRou(); Food c2 = d.createFood(md2); c.show(); c2.show(); }

總結:建造者模式把創建過程和展示完全分離,創建時繼承接口保證完全實現接口方法,這樣可以確保創建過程的完整性。
當創建系列復雜對象,並且對象內部的構建順序是有規律的,但構建方式有不同的變化時候,就可以選擇建造者模式。
建造者模式和外觀模式相似,都有一個中間層(指揮者或者門臉層)構建前端所需要展示的結果,區別在於:
外觀-客戶要賺錢,委托基金經理,基金經理會很多招數,股票行情好的時候,就買賣股票,黃金行情好的時候就買賣黃金,軍火行情好的時候就買賣軍火,各種行情都好的時候,就同時買賣股票、黃金、軍火。以達到賺錢的目的。
僅僅是各個對象的組合,沒有關註到每個對象的構建細節。
建造者-客戶要賺錢,委托基金經理,這個基金經理只會股票交易,必須嚴格執行低買高賣的順序,才能賺錢。

技術分享圖片

設計模式-建造者模式