<代码>//产品 公共抽象类食品 { 公共List列表=new List (); 公共抽象空白显示(); }//辣椒炒肉 公共类lajiaochaorou:食物 { 公共覆盖空白显示() { Console.WriteLine(“我已经:”); foreach (var项列表) { Console.WriteLine(项); } Console.WriteLine(“我变成了一盘香喷喷的辣椒炒肉”); Console.ReadLine (); } } 公共类hongshaorou:食物 { 公共覆盖空白显示() { Console.WriteLine(“我已经:”); foreach (var项列表) { Console.WriteLine(项); } Console.WriteLine(“我变成了一盘香喷喷的红烧肉”); Console.ReadLine (); } }//制造产品 公共抽象类MakeFood { 公共抽象空白addYan (); 公共抽象空白addYou (); 公共抽象空白addFood (); 公共抽象食品getResult (); } 公开课MakeLaJiaoChaoRou: MakeFood { 私人lajiaochaorou ljcr=new lajiaochaorou (); 公共覆盖空白addFood () { ljcr.list.Add(“加入了辣椒和肉”); } 公共覆盖空白addYan () { ljcr.list.Add(撒上了1毫克盐”); } 公共覆盖空白addYou () { ljcr.list.Add(“倒入了2毫升油”); } 公共覆盖食品getResult () { 返回ljcr; } } 公开课MakeHongShaoRou: MakeFood { 私人hongshaorou ljcr=new hongshaorou (); 公共覆盖空白addFood () { ljcr.list.Add(“加入了酱油和肉”); } 公共覆盖空白addYan () { ljcr.list.Add(撒上了3毫升盐”); } 公共覆盖空白addYou () { ljcr.list.Add(“倒入了5毫升油”); } 公共覆盖食品getResult () { 返回ljcr; } }//指挥者 公开课主管 { 公共食品createFood (MakeFood mk) { mk.addYou (); mk.addYan (); mk.addFood (); 返回mk.getResult (); } }//前端 静态void Main (string [] args) { d=新导演(); MakeFood md=new MakeLaJiaoChaoRou (); 食物c=d.createFood (md); MakeFood md2=new MakeHongShaoRou (); 食物c2=d.createFood (md2); c.show (); c2.show (); }代码>
总结:建造者模式把创建过程和展示完全分离,使得同样的创建过程可以创建不同的表示。
创建时继承接口保证完全实现接口方法,这样可以确保创建过程的完整性。
当创建系列复杂对象,并且对象内部的构建顺序是有规律的,但构建方式有不同的变化时候,就可以选择建造者模式。
建造者模式和外观模式相似,都有一个中间层(指挥者或者门脸层)构建前端所需要展示的结果,区别在于:
外观——客户要赚的钱,委托基金经理,基金经理会很多招数,股票行情好的时候,就买卖股票,黄金行情好的时候就买卖黄金,军火行情好的时候就买卖军火,各种行情都好的时候,就同时买卖股票,黄金,军火。以达到赚钱的目的。
仅仅是各个对象的组合,没有关注到每个对象的构建细节。
建造者——客户要赚的钱,委托基金经理,这个基金经理只会股票交易,必须严格执行低买高卖的顺序,才能赚钱。