设计模式——建造者模式

  
 <代码>//产品
  公共抽象类食品
  {
  公共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 ();
  
  } 
  

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

  

设计模式——建造者模式

  

设计模式——建造者模式

设计模式——建造者模式