今天开博了2007-7-16

开博没有太监的客。。。

 

简单工厂之简单模型(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;

              }

         }

     }

}

 


第一次作uml图,请各位多多斧正阿!先谢过了。

posted on 2005-09-08 10:44  胡敏  阅读(2617)  评论(3编辑  收藏  举报

导航