简单工厂之简单模型(uml)
《java与模式》上面那本书上的例子举的是园丁和果园的例子,学习设计模式最好在生活中自己找个例子,实践一下,下面是别人的一个例子(具体是谁我不知道),是讲快餐店的例子,快餐店提供很多食物,比如面条,米饭,面包。首先定义了一个Food接口,然后这些食物都从它来继承,定义了一个大厨他包办所有食物的制作工作,这就是我所理解的简单工厂模式的概念,下面是uml图:
下面是程序:
下面是程序:
using System;
namespace SimpleFactory
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
食物 food=大厨师.要做的食物("面条");
food.做食物();
food.卖食物();
Console.ReadLine();
}
}
///
/// 定义食物接口
///
public interface 食物
{
void 做食物();
void 卖食物();
}
///
/// 抛出大厨师不能做的食物
///
public class BadFoodException : System.Exception
{
public BadFoodException(string str)
{
System.Console.WriteLine(str);
}
}
///
/// 面条
///
public class 面条 : 食物
{
public 面条()
{
System.Console.WriteLine("这是面条");
}
public void 做食物()
{
System.Console.WriteLine("现在煮面条");
}
public void 卖食物()
{
System.Console.WriteLine("现在卖面条");
}
}
///
/// 面包
///
public class 面包 : 食物
{
public 面包()
{
System.Console.WriteLine("这是面包");
}
public void 做食物()
{
System.Console.WriteLine("现在做面包");
}
public void 卖食物()
{
System.Console.WriteLine("现在卖米饭");
}
}
///
/// 米饭
///
public class 米饭 : 食物
{
public 米饭()
{
System.Console.WriteLine("这是米饭");
}
public void 做食物()
{
System.Console.WriteLine("现在煮米饭");
}
public void 卖食物()
{
System.Console.WriteLine("现在卖米饭");
}
}
///
/// 大厨师
///
public class 大厨师
{
public static 食物要做的食物(string food)
{
try
{
switch(food)
{
case "面包":
return new 面包();
case "米饭":
return new 米饭();
case "面条":
return new 面条();
default:
throw new BadFoodException("没有这种食物");
}
}
catch(BadFoodException e)
{
throw e;
}
}
}
}