4.客户从建造者检索产品。从餐馆员工准备好套餐后,顾客再从餐馆员工那儿拿回套餐。这步客户程序要做的仅仅是取回已经生成的产品对象,如时序图中红色部分所示。
完整的客户程序:
通过分析不难看出,在这个例子中,在准备套餐的过程是稳定的,即按照一定的步骤去做,而套餐的组成部分则是变化的,有可能是普通套餐或黄金套餐等。这个变化就是建造者模式中的“变化点“,就是我们要封装的部分。1using System; 2using System.Configuration; 3using System.Reflection; 4 5namespace KFC 6{ 7 /**//// <summary> 8 /// Client 类 9 /// </summary> 10 public class Client 11 { 12 public static void Main(string[] args) 13 { 14 FoodManager foodmanager = new FoodManager(); 15 16 Builder instance; 17 18 Console.WriteLine("Please Enter Food No:"); 19 20 string No = Console.ReadLine(); 21 22 string foodType = ConfigurationSettings.AppSettings["No"+No]; 23 24 instance = (Builder)Assembly.Load("KFC").CreateInstance("KFC." + foodType); 25 26 foodmanager.Construct(instance); 27 28 Food food = instance.GetFood(); 29 food.Show(); 30 31 Console.ReadLine(); 32 } 33 } 34} 35