亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

舉例解析設計模式中的工廠方法模式在C++編程中的運用

2020-05-23 14:08:37
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了設計模式中的工廠方法模式在C++編程中的運用,文中也對簡單工廠模式和工廠方法模式進行了簡單的對比,需要的朋友可以參考下
 

工廠方法模式不同于簡單工廠模式的地方在于工廠方法模式把對象的創建過程放到里子類里。這樣工廠父對象和產品父對象一樣,可以是抽象類或者接口,只定義相應的規范或操作,不涉及具體的創建或實現細節。
其類圖如下:

舉例解析設計模式中的工廠方法模式在C++編程中的運用

實例代碼為:

#pragma once class IProduct { public:   IProduct(void);   virtual ~IProduct(void); };  #pragma once #include "iproduct.h" class IPad :   public IProduct { public:   IPad(void);   ~IPad(void); };  #pragma once #include "iproduct.h" class IPhone :   public IProduct { public:   IPhone(void);   ~IPhone(void); }; #pragma once #include"IProduct.h"  class IFactory { public:   IFactory(void);   virtual ~IFactory(void);    virtual IProduct* getProduct(); };   #pragma once #include "ifactory.h" class IPadFactory :   public IFactory { public:   IPadFactory(void);   ~IPadFactory(void);    virtual IProduct* getProduct(); };   #pragma once #include "ifactory.h" class IPhoneFactory :   public IFactory { public:   IPhoneFactory(void);   ~IPhoneFactory(void);    virtual IProduct* getProduct(); }; 

關鍵的實現:

#include "StdAfx.h" #include "IPadFactory.h" #include"IPad.h"  IPadFactory::IPadFactory(void) { }   IPadFactory::~IPadFactory(void) { }  IProduct* IPadFactory::getProduct() {   return new IPad(); }   #include "StdAfx.h" #include "IPhoneFactory.h" #include"IPhone.h"  IPhoneFactory::IPhoneFactory(void) { }   IPhoneFactory::~IPhoneFactory(void) { }   IProduct* IPhoneFactory::getProduct() {   return new IPhone(); } 

調用方式:

#include "stdafx.h" #include"IFactory.h" #include"IPadFactory.h" #include"IPhoneFactory.h" #include"IProduct.h"   int _tmain(int argc, _TCHAR* argv[]) {   IFactory *fac = new IPadFactory();   IProduct *pro = fac->getProduct();    fac = new IPhoneFactory();   pro = fac->getProduct();   return 0; } 


應用場景:
1..net里面的數據庫連接對象就是產生數據命令對象的工廠。每種數據庫的connection對象里(繼承自IDbConnection)都有對自己createCommand(定義在IDbCommand里)的實現。
2..net里面的迭代器,IEnumerable定義了迭代器的接口,即工廠方法,每一個繼承自IEnumerable的類都要實現GetEnumerator。可以參看ArrayList,String的GetEnumerator方法。他們都繼承自IEnumerable。

對比簡單工廠模式與工廠方法模式:

1. 結構復雜度

從這個角度比較,顯然簡單工廠模式要占優。簡單工廠模式只需一個工廠類,而工廠方法模式的工廠類隨著產品類個數增加而增加,這無疑會使類的個數越來越多,從而增加了結構的復雜程度。

2.代碼復雜度

代碼復雜度和結構復雜度是一對矛盾,既然簡單工廠模式在結構方面相對簡潔,那么它在代碼方面肯定是比工廠方法模式復雜的了。簡單工廠模式的工廠類隨著產品類的增加需要增加很多方法(或代碼),而工廠方法模式每個具體工廠類只完成單一任務,代碼簡潔。

3.客戶端編程難度

工廠方法模式雖然在工廠類結構中引入了接口從而滿足了OCP,但是在客戶端編碼中需要對工廠類進行實例化。而簡單工廠模式的工廠類是個靜態類,在客戶端無需實例化,這無疑是個吸引人的優點。

4.管理上的難度

這是個關鍵的問題。

我 們先談擴展。眾所周知,工廠方法模式完全滿足OCP,即它有非常良好的擴展性。那是否就說明了簡單工廠模式就沒有擴展性呢?答案是否定的。簡單工廠模式同 樣具備良好的擴展性——擴展的時候僅需要修改少量的代碼(修改工廠類的代碼)就可以滿足擴展性的要求了。盡管這沒有完全滿足OCP,但筆者認為不需要太拘 泥于設計理論。

然后我們從維護性的角度分析下。假如某個具體產品類需要進行一定的修改,很可能需要修改對應的工廠類。當同時 需要修改多個產品類的時候,對工廠類的修改會變得相當麻煩(對號入座已經是個問題了)。反而簡單工廠沒有這些麻煩,當多個產品類需要修改是,簡單工廠模式 仍然僅僅需要修改唯一的工廠類(無論怎樣都能改到滿足要求吧?大不了把這個類重寫)。

由以上的分析,筆者認為簡單工廠模式更好用更方便些。當然這只是筆者的個人看法而已,畢竟公認的,工廠方法模式比簡單工廠模式更“先進”。但有時過于先進的東西未必適合自己,這個見仁見智吧。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久夜色精品国产欧美乱| 国产精品专区h在线观看| 成人午夜在线观看| 日本亚洲欧美三级| 日韩色av导航| 另类视频在线观看| 欧美日韩加勒比精品一区| 91免费版网站入口| 亚洲美女www午夜| 精品一区二区三区三区| 国产欧美精品一区二区| 国产亚洲精品美女久久久久| 日韩欧美精品在线观看| 精品久久久久久国产| 亚洲国产天堂久久综合网| 亚洲电影免费观看高清完整版| 日韩黄色在线免费观看| www.日韩.com| 91国产在线精品| 日韩电视剧免费观看网站| 国产成人一区二区| 亚洲综合在线做性| 欧美日本啪啪无遮挡网站| 久久亚洲精品毛片| 日韩成人激情在线| 国产成人高清激情视频在线观看| 亚洲最大成人免费视频| 性色av一区二区三区免费| 欧美一区二区大胆人体摄影专业网站| 国产日韩精品一区二区| 日韩精品免费在线播放| 亚洲欧美激情视频| 亚洲精选一区二区| 欧美wwwwww| 国产精品视频地址| 亚洲自拍中文字幕| 国产成人啪精品视频免费网| 2020国产精品视频| 日本不卡视频在线播放| 91亚洲永久免费精品| 久久伊人精品天天| 亚洲国产精品成人va在线观看| 中文字幕日韩电影| 国产欧美日韩综合精品| 国产精品第3页| 亚洲日韩欧美视频| 亚洲图片在区色| 国产精品爽爽爽爽爽爽在线观看| 国产亚洲在线播放| 中文字幕自拍vr一区二区三区| 久久久久久久久久久国产| 91精品久久久久久综合乱菊| 亚洲人成免费电影| 俺去了亚洲欧美日韩| 亚洲三级黄色在线观看| 欧美老少做受xxxx高潮| 欧美性生交xxxxxdddd| 久久久人成影片一区二区三区| x99av成人免费| 欧美第一页在线| 亚洲成年网站在线观看| 亚洲欧美在线一区| 亚洲激情在线视频| 日韩性xxxx爱| 91精品久久久久久久久青青| 成人有码视频在线播放| 国产有码在线一区二区视频| 国产欧美日韩专区发布| 国产亚洲人成网站在线观看| 精品国产区一区二区三区在线观看| 狠狠躁18三区二区一区| 久久人体大胆视频| 亚洲色图35p| 国产成人在线视频| 久久久亚洲福利精品午夜| y97精品国产97久久久久久| 免费97视频在线精品国自产拍| 欧美黄网免费在线观看| 国产成人jvid在线播放| 欧美日韩国产精品| 久久综合伊人77777尤物| 成人免费网站在线| 国产视频在线一区二区| 国产日韩精品在线观看| 日韩精品中文字幕在线| 日韩大胆人体377p| 久久久免费高清电视剧观看| 久久精品国产久精国产一老狼| 亚洲另类欧美自拍| 欧美另类99xxxxx| 97免费视频在线| www.午夜精品| 日韩高清免费观看| 欧美激情精品久久久久久大尺度| 在线播放精品一区二区三区| 自拍偷拍免费精品| 久久精品国产成人精品| 欧美理论电影在线观看| 黑人巨大精品欧美一区二区免费| 日韩av免费在线| 日韩视频亚洲视频| 亚洲wwwav| 成人欧美一区二区三区在线湿哒哒| 欧美www在线| 亚洲精品乱码久久久久久按摩观| 亚洲aⅴ男人的天堂在线观看| 日本午夜精品理论片a级appf发布| 欧美成人午夜免费视在线看片| 中国日韩欧美久久久久久久久| 色琪琪综合男人的天堂aⅴ视频| 成人有码在线视频| 亚洲国产欧美一区二区丝袜黑人| 日本亚洲欧洲色| 美女视频黄免费的亚洲男人天堂| 国内免费精品永久在线视频| 国产91ⅴ在线精品免费观看| 国产成人激情视频| 午夜精品久久久久久久99黑人| 中文字幕久热精品视频在线| 久久97精品久久久久久久不卡| 全亚洲最色的网站在线观看| 久久夜色精品国产| 亚洲最新av在线网站| 亚洲欧美国产高清va在线播| 欧美日韩在线第一页| 九九九久久国产免费| 日韩久久午夜影院| 日韩精品日韩在线观看| 国产在线观看91精品一区| 亚洲视频一区二区三区| 色综合久久天天综线观看| 亚洲精品v欧美精品v日韩精品| 亚洲午夜久久久影院| 日本久久精品视频| 国产经典一区二区| 欧美大全免费观看电视剧大泉洋| 福利视频第一区| 91免费版网站入口| 懂色av影视一区二区三区| 久久成年人视频| 国产日韩欧美在线播放| 中文字幕亚洲综合| 午夜精品国产精品大乳美女| 国产精品久久二区| 国产97在线观看| 日韩欧美第一页| 欧美成人在线影院| 亚洲美女喷白浆| 亚洲精品资源美女情侣酒店| 国产亚洲精品久久久久久牛牛| 国外成人在线视频| 欧美激情乱人伦一区| 亚洲一区二区三区视频播放| 日韩激情av在线播放| 国内精品久久久久| 久热精品视频在线| 91精品国产成人www| 久久五月情影视| 欲色天天网综合久久| 欧美丰满少妇xxxxx| 亚洲精品一区二三区不卡| 国产精品亚洲一区二区三区| 91麻豆桃色免费看| 欧美天堂在线观看|