介紹
與建立型模式類似。工廠模式建立對象(視為工廠裡的産品)時無需指定建立對象的詳細類。
工廠模式定義一個用于建立對象的接口。這個接口由子類決定執行個體化哪一個類。該模式使一個類的執行個體化延遲到了子類。而子類能夠重寫接口方法以便建立的時候指定自己的對象類型。
這個模式十分實用,尤其是建立對象的流程指派的時候,比方依賴于非常多設定檔案等。而且,你會常常在程式裡看到工廠方法,用于讓子類類定義須要建立的對象類型。
正文
以下這個樣例中。是應用了工廠方法對第26章構造函數模式代碼的改進版本号:
不好了解的話,我們再給一個樣例:
假設還不了解的話,那我們就再具體一點咯,假如我們想在網頁面裡插入一些元素。而這些元素類型不固定。可能是圖檔,也有可能是連接配接,甚至可能是文本,依據工廠模式的定義。我們須要定義工廠類和對應的子類,我們先來定義子類的具體實作(也就是子函數):
那麼我們怎樣定義工廠處理函數呢?事實上非常easy:
使用方式例如以下:
至此,工廠模式的介紹相信大家都已經了然于心了,我就不再多叙述了。
總結
什麼時候使用工廠模式
下面幾種情景下工廠模式特别實用:
對象的建構十分複雜
須要依賴詳細環境建立不同執行個體
處理大量具有同樣屬性的小對象
什麼時候不該用工廠模式
不濫用運用工廠模式,有時候隻不過給代碼添加了不必要的複雜度。同一時候使得測試難以執行下去。