建立抽象產品類,定義所有產品的公共介面。
建立具體產品類,繼承於產品抽象類,
建立工廠類,在內部定義靜態方法,生產每個具體產品類的例項。
外部通過呼叫工廠類的靜態方法,並傳入引數來得到所需的產品。
某玩具工廠同時接到了三個不同客戶的訂單,需要生產一批玩具汽車、玩具飛機、玩具火車。於是工廠開設三條流水線進行生產作業。
**實現:
一、 建立抽象類,定義產品的公共介面
public
abstract
class product
二、建立各個具體產品類,繼承於抽象產品類,並實現父類的created方法。
public
class
toyproduct
extends
product
}public
class
aircraftproduct
extends
product
}public
class
trainproduct
extends
product
}
三、 建立工廠類,並提供乙個靜態方法來生產不同的產品,只需傳入對應客戶型別就可以生產客戶需要的產品。
public
class productfactory
return mproduct;}}
四、外部呼叫工廠類的靜態方法,並傳入客戶型別名稱得到產品物件並呼叫created方法。
public
class test catch (exception e)
try catch (exception e) }}
執行結果:
玩具汽車已經生產完畢
玩具火車已經生產完畢
玩具飛機已經生產完畢
沒有客戶4的產品
從結果上看出,在工廠類中並沒有定義「客戶4」的型別下,此時會丟擲異常,就此說明了使用簡單工廠模式,必須先清楚每個類的具體例項是什麼。否則,在外部呼叫傳入未定義的型別,則整個工廠類就會崩潰。
在知道了簡單工廠模式的優缺點,應用場景很明了了
感謝:
《大話設計模式》、《設計模式之禪》、《android高階之光》
設計模式學習 簡單工廠模式
今天把專案都做完後,就開始繼續學設計模式。剛看了簡單的工廠模式,感覺之前對物件導向這個概念實在是太淺了,在我的觀念中,一直認為程式只要能執行,沒有bug就是成功的,但是看了設計模式之後,發現原來的觀念實在是太表面化了,沒有深入的理解物件導向這個概念。我是看了 大話設計模式 這本書開始學的,感覺講的簡...
學習設計模式 簡單工廠模式
提供乙個能夠建立具有所需要的功能類的例項物件,而無需關心其內部是如何實現的,被建立的例項物件的型別可以是介面 抽象類或具體實現類。api 即所需要的所有功能介面 impl api的具體實現類,可以有多個 factory 工廠類,用於建立所需要的api的例項物件 client 通過factory來獲取...
設計模式 工廠模式(簡單工廠)
一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...