設計模式之工廠方法模式(C )

2021-08-29 22:55:57 字數 2055 閱讀 3194

工廠方法模式,定義乙個用於建立物件的介面,讓子類決定實力化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。其uml圖如下:

這裡要區分一下工廠方法模式與簡單工廠模式的區別。簡單工廠模式需要在工廠類中判斷要生產什麼型別的物件。工廠方法模式則把這部分工作交給了客戶端。每一種類物件都有自己的工廠,客戶端根據自己的不同需要生成不同工廠,然後在生產自己需要的物件。工廠方法模式相對簡單工廠模式來說降低了類與客戶端的耦合度。最重要的一點是當需要新增其他的類的時候不用修改原來的**。只需用新增響應的工廠就行了和類就行了。這樣做遵循了開放-封閉原則。而簡單工廠模式實際是破壞了開放-封閉原則。

其**如下:

// factorymethodmodel.h檔案

#pragma once

#include

// 操作類

template

<

typename t>

class

operation

virtual t getresult()

=0;protected

: t lpa, rpa;};

//加法操作

template

<

typename t>

class

addoperation

:public operation

virtual t getresult()

};// 減法操作

template

<

typename t>

class

suboperation

:public operation

virtual t getresult()

};// 乘法操作

template

<

typename t>

class

muloperation

:public operation

virtual t getresult()

};// 除法操作

template

<

typename t>

class

divoperation

:public operation

virtual t getresult()

return

this

->lpa /

this

->rpa;}}

;// 工廠類

template

<

typename t>

class

factory

;// 加法工廠

template

<

typename t>

class

addfactory

:public factory};

// 減法工廠

template

<

typename t>

class

subfactory

:public factory};

// 乘法工廠

template

<

typename t>

class

mulfactory

:public factory};

// 除法工廠

template

<

typename t>

class

divfactory

:public factory

};

測是**如下:

#include

#include

"factorymethodmodel.h"

intmain()

測試結果如下圖:

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

工廠方法模式屬於建立型模式,定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。它提供了一種建立物件的最佳方式。在工廠模式中,我們在建立物件時不會對客戶端暴露建立邏輯,僅僅是通過使用乙個共同的介面來指向新建立的物件。1 抽象工廠 creator 是工廠方法...

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

問題描述 之前講到了c 設計模式 簡單工廠模式,由於簡單工廠模式的侷限性,比如 工廠現在能生產producta productb和productc三種產品了,此時,需要增加生產productd產品 那麼,首先是不是需要在產品列舉型別中新增新的產品型別標識,然後,修改factory類中的switch結...

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

問題描述 之前講到了c 設計模式 簡單工廠模式,由於簡單工廠模式的侷限性,比如 工廠現在能生產producta productb和productc三種產品了,此時,需要增加生產productd產品 那麼,首先是不是需要在產品列舉型別中新增新的產品型別標識,然後,修改factory類中的switch結...