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

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

using System;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

namespace SimpleFactory

{

     class Class1

     {

         [STAThread]

         static void <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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图,请各位多多斧正阿!先谢过了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值