建造者模式

    /// <summary>
	/// 食物条目
	/// </summary>
	public interface Item
	{
		 string name();
		 Packing packing();
		 float Price();
	}
	public interface Packing{
		
		 string pack();
		
	}
    /// <summary>
	/// 实现包装
	/// </summary>
	public class Wrapper :Packing{
		
		public string pack(){
			
			return "Wrapper";
		}
	}
	
	public class Bottle :Packing{
		
		public string pack(){
			
			return "Bottle";
		}
	}
    /// <summary>
	/// 实现 Item 接口
	/// </summary>
	public abstract  class Burger :Item{
		
		public Packing packing(){
			
			return new Wrapper();
		}
		
		public abstract float Price();
		public abstract string name();
	}
	
	public abstract  class ColdDrink :Item{
		
		public Packing packing(){
			
			return new Bottle();
		}
		
		public abstract float Price();
		
		public abstract string name();
		
	}
    /// <summary>
	///实现 Burger 和 ColdDrink 的实体类。
	/// </summary>
	public class verBurger :Burger{
		
		public override float  Price(){
			
			return 25.0f;
		}
		
		public override string name(){
			return "verBurger";
		}
	}
	public class ChickenBurger :Burger{
		
		public override float  Price(){
			
			return 35.0f;
		}
		
		public override string name(){
			return "ChickenBurger";
		}
	}
	public class Coke :ColdDrink{
		
		public override float  Price(){
			
			return 15.0f;
		}
		
		public override string name(){
			return "Coke";
		}
	}
	public class Pepsi :ColdDrink{
		
		public override float  Price(){
			
			return 20.0f;
		}
		
		public override string name(){
			return "Pepsi";
		}
	}

 

    /// <summary>
	/// 创建一个 Meal 类
	/// </summary>
	public class Meal{
		private	List<Item> Items=new List<Item>();
		 
		public void AddItem(Item item){
			
			Items.Add(item);
			
		}
		
		public float getCost(){
			
			float cost=0.0f;
			foreach(Item item in Items)
			{
				cost+=item.Price();
			}
			return cost;
		}
		
		public void showMessage(){
			
			foreach(Item item in Items)
			{
				Report.Info("Item:"+item.name());
				Report.Info("Packing:"+item.packing().pack());
				Report.Info("price:"+item.Price());
			}
		}
	}
    /// <summary>
	/// 创建一个 MealBuilder 类,实际的 builder 类负责创建 Meal 对象。
	/// </summary>
	public class MealBuilder{
		
		public Meal prepareVegMeal(){
			Meal meal=new Meal();
			meal.AddItem(new verBurger());
			meal.AddItem(new Coke());
			return meal;
		}
		
		public Meal NonVegMeal(){
			Meal meal=new Meal();
			meal.AddItem(new ChickenBurger());
			meal.AddItem(new Pepsi());
			return meal;
		}
	}

 结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值