設計模式-簡單工廠模式(SimpleFactory-C#)
2024-07-21 02:18:46
供稿:網友
《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....");
}
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();
}
}
}
本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。