《大話設計模式》C 實現 01 簡單工廠模式

2021-10-23 15:55:26 字數 2976 閱讀 4537

3. 怎樣使用簡單工廠模式?

4. 例項

當出現批量化的產品時,使用單獨的類建立每個產品,實現去例項化物件。

1、降低了客戶與具體實現的耦合(相較不使用簡單工廠而言)。

封裝了細節,客戶只需呼叫工廠介面,不必關心如何建立產品,只關心使用產品;

1、工廠類對產品的耦合較強

集中了所有產品的建立邏輯,模組與模組之間耦合在乙個類裡。 工廠崩、系統也崩;

2、違反「開放-關閉原則」

新增新產品,除了新增新產品**外,還需要修改工廠邏輯,新增分支處理;

以四則運算器工廠為例:

1、簡單工廠類提供靜態方法,通過swich...case...生成對應運算器例項。

返回運算器的基類,將分支的子類指標賦值給了基類,實現客戶與具體產品的解耦。

2、提供運算器基類,實現通用方法,提供抽象的結果純虛介面getresult()

3、加減乘除子類分別實現getresult()介面,應用了多型執行時生成物件的特點,通過基類指標呼叫該介面,完成客戶端加減乘除功能的實現。

4.2.1 簡單工廠的靜態介面

1、operationfactory.h

#pragma once

#include

"operation.h"

#include

"operationadd.h"

#include

"operationmul.h"

#include

"operationdiv.h"

#include

"operationsub.h"

class

operationfactory

;operation* operationfactory::

createoperation

(char soperate)

return oper;

}

4.2.2 四則運算符繼承體系**

1、operation.h

#pragma once

#include

class

operation

virtual

~operation()

virtual

double

getresult()

=0;double

getnumbera()

double

getnumberb()

void

setnumbera

(const

double

& num)

void

setnumberb

(const

double

& num)

protected

:double m_numbera

;double m_numberb;}

;

2、operationadd.h

#pragma once

#include

"operation.h"

class

operationadd

:public operation

virtual

~operationadd()

double

getresult

() override

};

3、operationsub.h

#pragma once

#include

"operation.h"

class

operationsub

:public operation

virtual

~operationsub()

double

getresult

() override

};

4、operationmul.h

#pragma once

#include

"operation.h"

class

operationmul

:public operation

virtual

~operationmul()

double

getresult

() override

};

5、operationdiv.h

#pragma once

#include

"operation.h"

class

operationdiv

:public operation

virtual

~operationdiv()

double

getresult

() override }

;

此為《大話設計模式》學習心得系列 p9~~

簡單工廠高階一:《大話設計模式》c++實現:08 工廠模式

簡單工廠高階二:《大話設計模式》c++實現:01 簡單工廠模式(優化,使用巨集註冊工廠)

大話設計模式01 簡單工廠模式

可維護 可重複 可擴充套件。簡單工廠模式包含三個角色 工廠類factory 工廠類是用來製造產品的。因此,在factory中有乙個用於製造產品的create函式或者generate函式之類的函式。這個函式能夠根據 識別符號 的不同生成不同的concreteproduct,當然這些concretepr...

大話設計模式C 版本 01 簡單工廠模式

簡單工廠模式 根據不同的條件,使用乙個工廠類來建立不同類的物件的一種設計模式,用來解決建立物件的問題。有幾個不同的類,且這幾個類有共同的父類 在不同的條件下用這幾個類創造不同的物件 寫乙個抽象類作為不同條件的幾個類的父類,例如寫乙個 操作符類 作為 加法類 和 減法類 的父類 偽 class ope...

大話設計模式簡單工廠模式c 實現

大部分都是大話設計模式上的案例,工廠方法對著簡單工廠寫的,和書上案例不一致 include using namespace std 簡單工廠模式 抽象類 class abstractoperation protected int numbera 0 int numberb 0 具體實現類 class...