2013年12月28日 星期六

物件導向軟體工程:Abstract Factory

定義:與Factory Method相似,然而Abstract Factory生成一組物件,有別於Factory Method單筆單筆的物件,以鞋子為例,Factory Method產生鞋帶、鞋身、鞋底等基本物件,Abstract Factory則產生鞋子,鞋子包含了鞋底、鞋身、鞋帶的生成,而生成的method經常利用Factory Method製作,因此Abstract Factory常是一堆Factory Method組合而成。

使用時機:

  1. 類別無法確定生成物件的種類,如:知道製造鞋子,但不知道製造的是氣墊鞋還是皮鞋。
  2. 抽象類別希望憑藉子類別生成物件時。
  3. 不希望將程式碼寫死在該類別,且希望憑藉子類別應對不同需求。
  4. 需要生成的物件有相依特性的,如:製造鞋子,鞋子含鞋底、鞋身、鞋帶,產生鞋子就象徵產生鞋底、鞋身、鞋帶。
使用優點:      


  1. 降低轉移平台成本:  如果我們將實作部份直接寫死,當遇見不可抗力,導致必須轉移平台時,為了避免code的邏輯浪費,就必須進行Ctrl+C、Ctrl + V,然而,若使用Factory Method,只需要實作Interface,即可在該平台使用,降低轉移的成本。
  2. 解決需求未知:當面對需求模糊不清,但確實需要此類別時,藉由此物件模式,將需求實作延遲,未來子類別實作出來即可。
      
       若寫到interface,另外實作code負責new物件,如此一來,在不同平台時,無須複製大量code,只要根據interface實作出另一負責new物件的code,同時可以針對需求,產生不同code

沒有留言:

張貼留言