收藏:简单工厂模式(SimpleFactory-C#)

快餐店提供很多食物,比如 面条,米饭,面包。首先定义了一个Food接口,然后这些食物都从它来继承,定义了一个大厨

他包办所有食物的制作工作,这就是我所理解的简单工厂模式的概念,下面是源代码:



using System; 


namespace SimpleFactoryPattern 

/// <summary> 
/// 简单工厂模式示例 
/// </summary> 

class SimpleFactoryPattern 

//定义Food接口 
public interface Food 

//烹饪 
void Cook(); 
//卖出 
void Sell(); 

}
 

//Noodle 

public class Noodle:Food 

public Noodle() 

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;} 
}
 
}
 

//Rice 
public 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;} 
}
 
}
 



//Bread 
public 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> 

[STAThread] 
static void Main(string[] args) 

Food food
=Chef.MakeFood("bread"); 
food.Cook(); 
food.Sell(); 
Console.ReadLine(); 
}
 
}
 
}
 


posted @ 2007-04-11 13:59 BoyLee 阅读(427) 评论(0)  编辑 收藏 所属分类: Asp.Net

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-07-24 10:12 编辑过
 
另存  打印