MealBuilder
interface MealBuilder
{
void BuildBurger();
void BuildChicken();
void BuildDrink();
Meal GetMeal();
}
KFCBuilder
public class KFCBuilder:MealBuilder
{
protected Meal meal=new Meal();
public void BuildBurger()
{
Food food = new KFC_Burger();
meal.AddFood(food);
}
public void BuildChicken()
{
Food food = new KFC_Chicken();
meal.AddFood(food);
}
public void BuildDrink()
{
Food food = new KFC_Drink();
meal.AddFood(food);
}
public Meal GetMeal()
{
return meal;
}
}
McDonaldsBuilder
public class McDonaldsBuilder:MealBuilder
{
protected Meal meal=new Meal();
public void BuildBurger()
{
Food food = new McDonalds_Burger();
meal.AddFood(food);
}
public void BuildChicken()
{
Food food = new McDonalds_Chicken();
meal.AddFood(food);
}
public void BuildDrink()
{
Food food = new McDonalds_Drink();
meal.AddFood(food);
}
public Meal GetMeal()
{
return meal;
}
}
Director
class Director
{
private MealBuilder builder;
public Director(MealBuilder builder)
{
this.builder = builder;
}
public Meal BuildMeal()
{
this.builder.BuildBurger();
this.builder.BuildChicken();
this.builder.BuildDrink();
return this.builder.GetMeal();
}
}
Meal
public class Meal
{
private List<Food> foodList=new List<Food>();
public void AddFood(Food food)
{
this.foodList.Add(food);
}
public void show()
{
foreach (Food element in foodList)
{
element.deal();
}
}
}
Food
public interface Food
{
void deal();
}
KFC_Burger
public class KFC_Burger:Food
{
public void deal()
{
Console.WriteLine("您的KFC汉堡");
}
}
KFCChicken
public class KFC_Chicken:Food
{
public void deal()
{
Console.WriteLine("您的KFC炸鸡");
}
}
KFCDrink
public class KFC_Drink:Food
{
public void deal()
{
Console.WriteLine("您的KFC饮料");
}
}
McDonaldsBurger
public class McDonalds_Burger:Food
{
public void deal()
{
Console.WriteLine("您的麦当劳汉堡");
}
}
McDonaldsChicken
public class McDonalds_Chicken:Food
{
public void deal()
{
Console.WriteLine("您的麦当劳炸鸡");
}
}
McDonaldsDrink
public class McDonalds_Drink:Food
{
public void deal()
{
Console.WriteLine("您的麦当劳饮料");
}
}
Client
class Client
{
static void Main(string[] args)
{
MealBuilder b1 = new KFCBuilder();
Director d1 = new Director(b1);
Meal meal1 = d1.BuildMeal();
meal1.show();
MealBuilder b2 = new McDonaldsBuilder();
Director d2 = new Director(b2);
Meal meal2 = d2.BuildMeal();
meal2.show();
Console.Read();
}
}
