設計模式 I 簡單工廠模式(Factory)

2021-07-14 01:33:12 字數 1617 閱讀 2122

在物件導向程式設計中, 最通常的方法是乙個new操作符產生乙個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下, new操作符直接生成物件會帶來一些問題。簡單工廠模式用於建立物件,新增新物件時不會影響以前的系統**。

核心思想是用乙個工廠類來根據輸入條件產生不同的類,然後根據不同類的virtual函式得到不同的結果。

示例:簡單計算器的設計,設計的計算器具有進行加、減、乘、除運算的功能,並且可根據需要新增新的運算方法

適用於不同情況下建立不同的類時使用,客戶不需要知道物件的建立過程。

簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(static factory method)模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。

工廠(creator):簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類的建立產品類的方法可以被外界直接呼叫,建立所需的產品物件。

抽象產品(product):簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。

具體產品(concrete product):是簡單工廠模式的建立目標,所有建立的物件都是充當這個角色的某個具體類的例項。

#ifndef  factory_h

#define factory_h

//基類

namespace factory

};//加法

class addoperation :public coperation

};//減法

class suboperation :public coperation

};//乘法

class muloperation :public coperation

};//除法

class divoperation :public coperation

};//factory

class ccalaulato***ctory

;}#endif

#include "factory.h"

factory:

:coperation*

factory:

:ccalaulato***ctory

::create(char coperator)

return oper;

}

工廠類無法完成對記憶體的**,oper只是乙個區域性變數,具體產品的生命週期比oper的生命週期更長,只能交給客戶端完成。

#include 

#include "factory.h"

int main()

工廠類負責建立的物件比較少;

客戶只知道傳入工廠類的引數,對於如何建立物件(邏輯)不關心;

由於簡單工廠很容易違反高內聚責任分配原則,因此一般只在很簡單的情況下應用。

設計模式 工廠模式(簡單工廠)

一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...

設計模式(簡單工廠模式 工廠模式 抽象工廠模式)

當邏輯較為簡單時,可以直接建立對應的類。如下 include using namespace std class class banana class pear intmain 通過此 可以發現,使用者直接與客戶接觸,違背了dip 依賴倒轉 原則,過於麻煩,所以引出簡單工廠模式。include us...

設計模式 簡單工廠設計模式

請用任意一種物件導向語言實現計算器控制台程式,要求輸入兩個數和運算符號,得到結果。operation運算類 public class operation set public double numberb set public virtual double getresult 加減乘除類 using...