简单工厂之简单模型(uml)

简单工厂之简单模型(uml)

《java与模式》上面那本书上的例子举的是园丁和果园的例子,学习设计模式最好在生活中自己找个例子,实践一下,下面是别人的一个例子(具体是谁我不知道),是讲快餐店的例子,快餐店提供很多食物,比如面条,米饭,面包。首先定义了一个Food接口,然后这些食物都从它来继承,定义了一个大厨他包办所有食物的制作工作,这就是我所理解的简单工厂模式的概念,下面是uml图:
o_uml.JPG
下面是程序:
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;

}

}

}

}

原文地址:https://www.cnblogs.com/beeone/p/2009845.html