//产品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(); }

总结:建造者模式把创建过程和展示完全分离,使得同样的创建过程可以创建不同的表示。
创建时继承接口保证完全实现接口方法,这样可以确保创建过程的完整性。
当创建系列复杂对象,并且对象内部的构建顺序是有规律的,但构建方式有不同的变化时候,就可以选择建造者模式。
建造者模式和外观模式相似,都有一个中间层(指挥者或者门脸层)构建前端所需要展示的结果,区别在于:
外观-客户要赚钱,委托基金经理,基金经理会很多招数,股票行情好的时候,就买卖股票,黄金行情好的时候就买卖黄金,军火行情好的时候就买卖军火,各种行情都好的时候,就同时买卖股票、黄金、军火。以达到赚钱的目的。
仅仅是各个对象的组合,没有关注到每个对象的构建细节。
建造者-客户要赚钱,委托基金经理,这个基金经理只会股票交易,必须严格执行低买高卖的顺序,才能赚钱。