设计模式-工厂模式(手工作坊到工业化的转变 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();
}
}
}
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();
}
}
}
相关文章推荐
- C#中WebBrowser的使用
- C#網絡編程
- C#中的多線程
- 企业信息化系统基础——AD:使用C#批量创建帐号
- Usefull Attribute of c#
- C#读写注册表
- C#实现饼图与棒图
- 请高手指教关于WAP与C#.NET的问题
- C#属性编程
- C#首席设计师Anders Hejlsberg专访
- [C#]Windows服务程序[转载西门吹雪的好文章]
- 设计模式-简单工厂模式(SimpleFactory-C#)
- 软件设计模式C#
- Bridge Pattern using C#
- 用C#编写发手机中文短信息Windows服务
- Changing IE setting in C#
- Inside c#_Chapter1(02)
- 使用 Visual C# .NET 向 Microsoft Excel 2002 传输 XML 数据
- 天天学C#-委托(delegate)
- Inside c#_Chapter1(01)