目錄現在對該系統進行修改,不再設計乙個按鈕工廠類來統一負責所有產品的建立,而是將具體按鈕的建立過程交給專門的工廠子類去完成,我們先定義乙個抽象的按鈕工廠類,再定義具體的工廠類來生成圓形按鈕、矩形按鈕、菱形按鈕等,它們實現在抽象按鈕工廠類中定義的方法。這種抽象化的結果使這種結構可以在不修改具體工廠類的情況下引進新的產品,如果出現新的按鈕型別,只需要為這種新型別的按鈕建立乙個具體的工廠類就可以獲得該新按鈕的例項,這一特點無疑使得工廠方法模式具有超越簡單工廠模式的優越性,更加符合「開閉原則」。
工廠方法模式(factory method pattern)又稱為工廠模式,也叫虛擬構造器(virtual constructor)模式或者多型工廠(polymorphic factory)模式,它屬於類建立型模式。在工廠方法模式中,工廠父類負責定義建立產品物件的公共介面,而工廠子類則負責生成具體的產品物件,這樣做的目的是將產品類的例項化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應該例項化哪乙個具體產品類。
工廠方法模式包含如下角色:
// created on: 02-十月-2014 10:18:58
// original author: colin
///#include "concretefactory.h"
#include "concreteproduct.h"
product* concretefactory::factorymethod()
12 34 5
6 78 9
1011
1213
1415
1617
#include "factory.h"工廠方法模式是簡單工廠模式的進一步抽象和推廣。由於使用了物件導向的多型性,工廠方法模式保持了簡單工廠模式的優點,而且克服了它的缺點。在工廠方法模式中,核心的工廠類不再負責所有產品的建立,而是將具體建立工作交給子類去做。這個核心類僅僅負責給出具體工廠必須實現的介面,而不負責哪乙個產品類被例項化這種細節,這使得工廠方法模式可以允許系統在不修改工廠角色的情況下引進新產品。#include "concretefactory.h"
#include "product.h"
#include using namespace std;
int main(int argc, char *ar**)
日誌記錄器
某系統日誌記錄器要求支援多種日誌記錄方式,如檔案記錄、資料庫記錄等,且使用者可以根據要求動態選擇日誌記錄方式, 現使用工廠方法模式設計該系統。
結構圖:
時序圖:
在以下情況下可以使用工廠方法模式:
jdbc中的工廠方法:
connection conn=drivermanager.getconnection("jdbc:microsoft:sqlserver://localhost:1433; databasename=db;user=sa;password=");
statement statement=conn.createstatement();
resultset rs=statement.executequery("select * from userinfo");
建立型模式 工廠模式
1.什麼是工廠模式 工廠模式提供了建立物件的最佳方式,在建立物件時不會對客戶端暴露建立邏輯,並且通過乙個共同的介面來指向建立的物件。2.使用場景 在不同的條件下建立不同的例項,比如spring使用了工廠模式管理bean的建立 生命週期以及bean與bean之間的關係。3.如何實現 定義乙個建立物件的...
建立型模式 工廠模式
建立型模式 工廠模式 工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式 符合 開放 封閉 原則 通過新增 的方式,不是通過修改 的方式完成功能的增強。工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,...
建立型模式 工廠模式
意圖 定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。主要解決 主要解決介面選擇的問題。何時使用 我們明確地計畫不同條件下建立不同例項時。如何解決 讓其子類實現工廠介面,返回的也是乙個抽象的產品。關鍵 建立過程在其子類執行。應用例項 1 您需要一輛汽車...