2014年7月20日 星期日

簡單工廠模式(Simple Factory)

  • 簡單工程模式又稱作靜態工廠方法(static Factory Method),這個模式的主要特色是把物件生產的細節封裝起來交給Factory生產,客戶端只需要傳遞生產參數給Factory的靜態方法,進而產生相對的物件,不需要處理製造細節
  • 這個單一工廠可以完全負責產品的生產流程,不需要依賴其他工廠製造物件(否則就需要採取抽象工廠模式)
  • 應用的物件導向守則:
    • 物件要開放擴充新類別、關閉修改舊類別
    • 將物件中不允許修改的部份給以封裝
    • 需要被擴充的部份便開放複寫(override)
接下來看個例子,有去過鶯歌老街嗎?裡面有一些小店專門賣各式各樣的杯子,主要以陶瓷杯為主另外也有玻璃杯、塑膠杯等工藝,這個以下程式一個杯子的抽象類別,每一個杯子都有一個生產號碼(CupCode),以及杯子的類型(CuType)材質(CupMaterial)屬性,每個杯子一般來說都需要透過塑模(Model)、烘烤(Bake)和塗色(Color)的過程,其中塑模的方式是依照不同的杯子類別所決定。因此把Model抽出成一個抽象方法,讓繼承的類別實作(override)這些方法。

image
  • 現在有個杯子工廠,這個工廠生產各式各樣的杯子,注意這是一個靜態類別並且擁有一個靜態方法(CreateOneCup),這個工廠接受不同類別(CupType)的杯子訂單,這樣一來就可以透過直接呼叫這個方法生產(傳回)一個杯子的物件
clip_image001[4]
clip_image002[4]
image
  • 接下來一個杯子店可以透過杯子工廠訂購不同杯子,這裡面用了一個OrderCup的方法把工廠的CreateOneCup方法封裝起來。
clip_image001[6]
  • 最後看一下主程式怎麼運作的吧
clip_image001[8]
clip_image002[6]

沒有留言:

張貼留言