平面設計模式
目錄
現在對該系統進行修改,不再設計乙個按鈕工廠類來統一負責所有產品的建立,而是將具體按鈕的建立過程交給專門的工廠子類去完成,我們先定義乙個抽象的按鈕工廠類,再定義具體的工廠類來生成圓形按鈕,矩形按鈕,菱形按鈕等,它們實現在抽象按鈕工廠類中定義的方法。這種抽象化的結果使這種結構可以在不修改具體工廠類的情況下引進新的產品,如果出現新的按鈕型別,只需要為這種新型別的按鈕建立乙個具體的工廠類就可以獲得該新按鈕的例項,這一特點無疑使得工廠方法模式具有超越簡單工廠模式的優越性,更加符合「開閉原則」。
工廠方法模式(工廠方法模式)又稱為工廠模式,也叫虛擬構造器(virtual constructor)模式或者多型工廠(polymorphic factory)模式,它屬於類建立型模式。在工廠方法模式中,工廠父類負責定義建立產品物件的公共介面,而工廠子類則負責生成具體的產品物件,這樣做的目的是將產品類的例項化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應該例項化哪乙個具體產品類。
工廠方法模式包含如下角色:
1234五67
891011
1213
14
// /// concretefactory.cpp
//類concretefactory的實現
colin /// // //
#include
「concretefactory.h」
#include
「concreteproduct.h」
產品*
concretefactory
:: factorymethod
()
1234五67
891011
1213
1415
1617
#include工廠方法模式是簡單工廠模式的進一步抽象和推廣。由於使用了物件導向的多型性,工廠方法模式保持了簡單工廠模式的優點,而且克服了它的缺點。在工廠方法模式中,核心的工廠類不再負責所有產品的建立,而是將具體建立工作交給子類去做。這個核心類僅僅負責給出具體工廠必須實現的介面,而不負責哪乙個產品類被例項化這種細節,這使得工廠方法模式可以允許系統在不修改工廠角色的情況下引進新產品。「factory.h」
#include
「concretefactory.h」
#include
「product.h」
#include
使用命名空間
std
;int
main
(int
argc
,char
* argv
)
日誌記錄器
某系統日誌記錄器要求支援多種日誌記錄方式,如檔案記錄,資料庫記錄等,且使用者可以根據要求動態選擇日誌記錄方式,現使用工廠方法模式設計該系統。
結構圖:
在以下情況下可以使用工廠方法模式:
jdbc中的工廠方法:
連線conn
= drivermanager
。getconnection
(「jdbc:microsoft:sqlserver:// loc
alhost
:1433
; databasename
= db
; user
= sa
; password
= 」);
宣告宣告
= conn
。createstatement
();
resultset
rs =
statement
。executequery
(「select * from userinfo」
);
next
previous
。sphinx主題
由read the docs提供
java工廠模式
定義乙個用於建立物件的介面,我們需要乙個物件例項的時候就可以通過呼叫介面的方法來獲取我們想要的物件例項。首先,最簡單的 簡單工廠介面,可以返回例項 public inte ce factory 工廠實現類,返回money例項 public class moneyfactoryimpl impleme...
Java工廠模式
工廠模式理解起來並不是很難 只要耐心看看 理解它的運作機理就好了。運用時就要看個人的靈活性了。工廠是用來生產東西,但是從程式的角度講就是 用乙個工廠類來生產出你所需要的物件,這個生產出的物件可以是任意形式的 包括人,動物,水果,植物等不一定是要 機械性的東西 這是它跟現實工廠的區別之一。產品是由工廠...
java工廠模式
1.定義介面類idaouser public inte ce idaouser 2.定義工廠類,此工廠類實現了兩個不同類的呼叫。public final class daouse ctory return null 3 介面的實現,實現了介面idaouser的方法 public class daou...