您的位置:首页 > 编程语言 > C#

设计模式-工厂模式(手工作坊到工业化的转变 c#实现)

2004-11-23 20:54 826 查看
还是以快餐店做例子,简单工厂模式相当于家庭作坊,随着社会的进步,分工变细,所有快餐不再是一个师父包办,而是出现了面点师,米饭师(呵呵,不知道有没有这个,反正大家明白就行),面包师分别负责专门的食物制作。这就是工厂模式,请看下面的例子:

using System;

namespace FactoryPattern
{
/// <summary>
/// 工厂模式示例
/// </summary>
class FactoryPattern
{
public static Chef nChef,rChef,bChef;
public static Food noodle,rice,bread;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{

//调用示例
nChef=new NoodlChef();
nChef.MakeFood();
rChef=new RiceChef();
rChef.MakeFood();
bChef=new BreadChef();
bChef.MakeFood();

Console.ReadLine();
}
}
class BadFoodException: System.Exception
{
public BadFoodException(string strMsg)
{
Console.WriteLine(strMsg);
}
}

//定义各种快餐
public interface Food
{
//烹饪
void Cook();
//卖出
void Sell();

}
public class Noodle:Food
{
public Noodle()
{
Console.WriteLine("/nThe Noodle is made..");
}
private int price;
public void Cook()
{
Console.WriteLine("/nNoodle is cooking...");
}
public void Sell()
{
Console.WriteLine("/nNoodle has been sold...");
}
public int Price
{
get{return this.price;}
set{price=value;}
}
}
public class Rice:Food
{
public Rice()
{
Console.WriteLine("/nThe Rice is made ..");
}
private int price;
public void Cook()
{
Console.WriteLine("/nRice is cooking...");
}
public void Sell()
{
Console.WriteLine("/nRice has been sold...");
}
public int Price
{
get{return this.price;}
set{price=value;}
}
}
public class Bread:Food
{
public Bread()
{
Console.WriteLine("/nThe Bread is made....");
}
private int price;
public void Cook()
{
Console.WriteLine("/nBread is cooking...");
}
public void Sell()
{
Console.WriteLine("/nBread has been sold...");
}
public int Price
{
get{return this.price;}
set{price=value;}
}
}

//定义厨师接口,并分别定义面条师,米饭师,面包师

public interface Chef
{

//做饭
Food MakeFood();
}

//面条师负责制作面条
class NoodlChef:Chef
{
public Food MakeFood()
{
return new Noodle();
}
}

//米饭师负责米饭
class RiceChef:Chef
{
public Food MakeFood()
{
return new Rice();
}
}

//面包师负责做面包
class BreadChef:Chef
{
public Food MakeFood()
{
return new Bread();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: