程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 設計模式-簡單工廠模式(SimpleFactory-C#)

設計模式-簡單工廠模式(SimpleFactory-C#)

編輯:.NET實例教程


《Java與模式》 

上面那本書上的例子舉的是園丁和果園的例子,學習設計模式最好在生活中自己找個例子 

實踐一下,下面是我自己的一個例子,是講快餐店的例子,快餐店提供很多食物,比如 

面條,米飯,面包。首先定義了一個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...."); 
}

$False$


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(); 





  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved