首页 > 其他 > 详细

建造者模式

时间:2016-01-03 21:00:14      阅读:403      评论:0      收藏:0      [点我收藏+]

 

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();
    }
}

技术分享

建造者模式

原文:http://www.cnblogs.com/123456yao/p/5097102.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!