摘要:Design Pattern - Simple Factory
其實一直有在閱讀Design Pattern的東西,可惜的是專案的類型一直沒辦法實做,
以至於每次讀過就忘了,趁著今日空閒加上部落格很久沒有新知了,於是乾脆自己實做
一個工廠,之前閱讀相關文章,看完雖然懂了,可是沒有一個實際的例子,因此印象總
不深刻,想想乾脆直接拿生活的例子舉例,這樣總算比較好了解了,以下是我閱讀過後
消化完的結果。
- 把工廠模式想像為一個專門生產工廠
- 工廠裡面有生管部門,專管製造流程 (Class or Interface)
- 工廠裡面有生產製造的單位(Class)
每個產線雖然都有裝罐、貼標的流程,但在魚罐頭的部分可能用的是鐵罐,
而牛頭可能用的是鋁罐。
以下是自己腦補的情節,老王是一家罐頭經銷商,由於公司銷售新增產品而找到罐頭工廠OEM,
於是老王將需要生產的BOM表交由工廠。
工廠接到訂單後,把上由生管單位排定流程,而生產單位則配合生管的流程將產品生產出來。
這就是Simple Factory模式。
設定一下起始參數
以下是我的罐頭工廠類、生管類、魚產業類、牛產線類
namespace SimpleFactory
{
class 罐頭工廠
{
public static void Main(string[] args){
string Kind;
生管 factory;
Kind = args[0];
factory = new 生管();
switch (Kind)
{
case "牛":
factory = new 牛生產課();
break;
case "魚":
factory = new 魚生產課();
break;
}
factory.Kind = Kind;
factory.Packing();
factory.StickyTag();
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SimpleFactory
{
class 生管
{
private string _Kind = string.Empty;
public string Kind
{
get { return _Kind; }
set { _Kind = value; }
}
public virtual void Packing(){
}
public virtual void StickyTag() {
}
}
}
namespace SimpleFactory
{
class 魚生產課 : 生管
{
public override void Packing()
{
Console.WriteLine("裝鋁罐");
}
public override void StickyTag()
{
Console.WriteLine("貼"+ Kind +"的條碼的標籤");
}
}
}
namespace SimpleFactory
{
class 牛生產課 : 生管
{
public override void Packing()
{
Console.WriteLine("裝鐵罐");
}
public override void StickyTag()
{
Console.WriteLine("貼"+ Kind +"的條碼標籤");
}
}
}
執行結果:
這裡就有的實際的例子詳細說明了Simple Factory