gurudk 发表于 2013-2-5 01:15:00

设计模式-简单工厂模式(SimpleFactory-C#)

自己CSDN blog上回收来的,以后都集中到这里了。
 
参考资料
   《java与模式》
 
    上面那本书上的例子举的是园丁和果园的例子,学习设计模式最好在生活中自己找个例子实践一下,下面是我自己的一个例子,是讲快餐店的例子,快餐店提供很多食物,比如面条,米饭,面包。首先定义了一个Food接口,然后这些食物都从它来继承,定义了一个大厨他包办所有食物的制作工作,这就是我所理解的简单工厂模式的概念,下面是源代码:
 
 
using System;namespace SimpleFactoryPattern{ /// <summary> /// 简单工厂模式示例 /// </summary> class SimpleFactoryPattern {//定义Food接口   public interface Food   {         //烹饪         void Cook();         //卖出         void Sell();   }//Noodlepublic class Noodle:Food{         publicNoodle()         {            Console.WriteLine("\nThe Noodle is made..");         }         private int price;            //面条Noodle的Cook方法接口实现         public void Cook()         {            Console.WriteLine("\nNoodle is cooking...");         }         //面条Noodle的Sell方法接口实现         public void Sell()         {            Console.WriteLine("\nNoodle has been sold...");         }         public int Price         {            get{return this.price;}            set{price=value;}         }}//Ricepublic 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;}         }}   //Breadpublic 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;}         }}//定义大厨,他包办这个快餐店里的所有Food,包括面条,面包和米饭class Chef{         public static Food MakeFood(string foodName)         {                  try                  {                           switch(foodName)                           {                                  case "noodle": return new Noodle();                                  case "rice":return new Rice();                                  case "bread":return new Bread();                                  default:throw new BadFoodException("Bad food request!");                           }                  }                  catch(BadFoodException e)                  {                           throw e;                  }   }   }//异常类,该餐馆没有的食品class BadFoodException: System.Exception{            public BadFoodException(string strMsg)         {                Console.WriteLine(strMsg);         }}/// <summary>/// 应用程序的主入口点。/// </summary>static void Main(string[] args){         Food food=Chef.MakeFood("bread");         food.Cook();         food.Sell();         Console.ReadLine();} }}  
 
页: [1]
查看完整版本: 设计模式-简单工厂模式(SimpleFactory-C#)