設計模式之工廠方法模式

2021-10-10 15:51:55 字數 1796 閱讀 8266

工廠方法模式就是定義建立產品物件的工廠介面,將產品物件的實際建立工作延遲到具體子類中執行。滿足建立型模式的「建立與使用相分離」的原則。

優點:使用者只要知道具體工廠的名稱就能得到產品,無需知道產品的具體建立過程。

靈活性增強,對於新產品的建立就只需要多寫乙個相應工廠類。

典型的解耦框架。高層只需要知道產品的抽象類,無需關心其它實現類,滿足迪公尺特原則,依賴倒置原則,黎克特制替換原則。

缺點:類的個數容易增多,增加複雜度。

增加了系統的抽象性和理解程度。

一種具體工廠只能生產一種產品。

抽象工廠:creator抽象類提供createproject()來建立產品。

具體工廠:concretecreator實現抽象工廠的方法,完成產品建立。

抽象產品:phone抽象類提供乙個拍照的方法,定義手機的拍照功能。

具體產品:小公尺手機和一加手機繼承了手機抽象類的拍照特性。

**如下

/**

* @description: 抽象工廠

* @author: suy

* @createdate: 2021/4/11 15:13

*/abstract class creator

/** * @description: 具體工廠

* @author: suy

* @createdate: 2021/4/11 15:13

*/class concretecreator extends creator catch (exception e)

return (t)phone;

}}/**

* @description: 抽象手機類

* @author: suy

* @createdate: 2021/4/11 15:13

*/abstract class phone

/** * @description: 小公尺手機

* @author: suy

* @createdate: 2021/4/11 15:13

*/class miphone extends phone

}/**

* @description: 小公尺手機

* @author: suy

* @createdate: 2021/4/11 15:13

*/class oneplusphone extends phone

}/**

* @description: 工廠方法模式

* @author: suy

* @createdate: 2021/4/11 15:13

*/public class factorymethod

}

工廠方法模式是new物件的替代品,在所有需要生成物件的地方都可以使用,但是需要慎重加入乙個工廠類進行管理,會增加**的複雜度。

需要靈活的、可擴充套件的框架時,可以考慮採用工廠方法模式。例如需要設計乙個使用hibernate來連線資料庫時,有兩種資料庫可供選擇:mysql和oracle,我們可以增加乙個載入驅動的介面,實現方法就根據不同的資料庫來載入不同的驅動以及其他配置,按照傳入不同的標識來進行切換。

最後,可以使用在測試驅動開發的框架下。例如,測試乙個類a,就需要把與類a有關聯關係的類b也同時產生出來,我們可以使用工廠方法模式把類b虛擬出來,避免類a與類b的耦合。目前由於jmock和easymock的誕生,該使用場景已經弱化了,讀者可以在遇到此種情況時直接考慮使用jmock或easymock。

設計模式 工廠模式之工廠方法模式

工廠方法模式是指定義乙個建立物件的介面,然後實現這個介面的工廠來決定建立什麼樣的例項。工廠方法讓類的例項推遲到子類中進行。在這個模式中,只關心需要建立的是什麼工廠,不需要關心建立的細節。而且新加入的產品符合開閉原則。1 建立支付介面,裡面定義抽象的支付方法。package com.gupao.vip...

設計模式之工廠方法模式

package com.csair.design.pattern 工廠方法,有抽象基類,每個子類生產乙個具體物件,與抽象工廠的關係是,抽象工廠生產多個產品 產品有某種內在聯絡 工廠方法只生產乙個物件 author ppt public class factorymethod public stati...

設計模式之工廠方法模式

在介紹工廠方法模式之前,先來介紹一下簡單工廠。什麼是簡單工廠?在類中,難免要例項化一些類,那麼我們把這些類的例項化抽離出來封裝成乙個工廠類,工廠類提供乙個公共的靜態或非靜態的方法來返回其他物件所需要的物件。這樣做的目的就是將物件的例項化與邏輯 分開,提高 的復用能力。這就是簡單工廠。public a...