設計模式之Factory模式

2021-08-15 02:14:38 字數 1263 閱讀 1111

今天開始學習設計模式,設計模式之於物件導向程式設計的作用就像演算法之於面向過程的程式設計一般重要。首先從factory模式開始。

factory模式:

它們給一系列有聯絡的物件提供了建立的介面,而不用顯式地明確類名。

解決的問題有兩類:

1.為了提高內聚,松耦合,我們會抽象出一些類的公共介面以形成公共基類或介面。這樣我們可以通過使用指向基類的指標來指向實際的子類實現,達到多型的目的。假如有n多的子類指向基類,我們需要在每次用到子類的地方編寫諸如:new ***;的code。這裡就帶來兩個問題:1.客戶程式設計師必須知道實際的子類名稱 2程式的擴充套件性和維護性越來越難

2.在父類中並不知道需要例項化哪乙個子類,假設我們在類a中要使用到類b,b是乙個抽象父類,在a中並不知道要具體例項化b的哪乙個子類,但是在a的子類d重視可以知道的。在a中我們就沒有辦法通過new ***;來例項化物件,因為根本不知道例項化哪乙個。

以上兩個問題也就描述了factory模式的作用:

1 .定義建立物件的介面,封裝了物件的建立 的

結構示意圖如下:

2.使得具體化類的操作延遲到子類中,示意圖如下

比較形象的說就是:現在有生產水果罐頭的工廠(抽象類工廠):工廠1(工廠例項化物件),工廠2(工廠例項化物件)。這兩個工廠都生產著水果罐頭(抽象類產品) : 水蜜桃罐頭(產品例項化物件),哈密瓜罐頭(產品例項化物件),蘋果罐頭(產品例項化物件)。

#ifndef _product_h_

#define _product_h_

class product

;class concreteproduct:public product

;#endif //~_product_h_

#include "product.h"

#include using namespace std;

product::product()

product::~product()

concreteproduct::concreteproduct()

factory::~factory()

concretefactory::concretefactory()

設計模式之Factory

工廠模式主要是 為了建立物件而提供的介面。1.如下是乙個簡單的工廠類 在程式中,如果要例項化sample時.就使用 sample samplea factory.creator 1 就可。2.如下是更高一點的 抽象工廠模式。如果建立物件的方法變得複雜了,如上面的是建立乙個sample物件,這邊要是還...

設計模式之Factory

最近開始對設計模式產生了興趣,於是翻來 四人幫 的 設計模式 來看,發現很難懂,真不是我這小小的本科生能夠輕易理解的,算了,我還是先看看旁人的學習成果吧,拿來研究了一下,發現工程模式並不是很難 當然我只是說思想 挺容易上手的,閒話不多說,總結一下吧。模式名稱 工廠模式 別名 kit 說明 工廠模式包...

設計模式之Factory

工廠模式就是專門負責例項化大量相同介面的類。簡單的工廠模式用 head first 中的例子就要生產不同的比薩,只需要告訴工廠你要什麼樣的比薩,它就會給你生產出來。這樣的 如下 想一下簡單的工廠模式為我們做了什麼?相當於把生成物件的這個功能分離出去,也就是解耦讓 變得簡單。這樣做還有乙個好處就是,在...