設計模式 簡單工廠模式

2022-03-11 18:37:56 字數 1172 閱讀 3975

都說**之間的耦合度要低,要對擴充套件開放,修改封閉,但是在學習設計模式之前,這都是浮雲。最近開始學習設計模式,跟大家分享一下。今天從運算器的角度,給大家帶來的是——簡單工廠模式。

首先看一下下面這個運算類。

enum operatortype

;class operator

;class operator

;class plusoperator:public operator

};class subtractoperator

};class multiplicationoperator

};class divisionoperator

{public:

virtual double getresult()

{ if(0 == numb)

{ cout<<"error"《如上,當我們需要用到加法的時候,只需要使用plusoperator類即可。這相當於客戶端還是需要進行一定的邏輯判斷。我們可以將這部分邏輯使用乙個類operationfactory統一管理這部分邏輯,並把這個類稱為簡單工廠類。

//簡單工廠類

class operationfactory

{ public static operator* createoperator(operatortype operate)

{ switch(operate)

{ case plus:

return new plusoperator();

case subtract:

return new subtractoperator();

case multiplication:

return new multiplicationoperator();

case division:

return new divisionoperator();

default:

cout<<"error"operplus->numb = 1;

coutopersub->numb = 1;

cout將邏輯處理從客戶端分離,減少了**的耦合度,從而讓**修改起來更方便。

易於拓展,當需要增加新的運算時,只需要新增新的類與增加case語句即可。

當我們需要增加新的功能時,需要修改原來的**。一定程度上違反了物件導向設計的「對修改封閉,對擴充套件開發」原則。

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

一 簡單工廠 定義 簡單工廠模式 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...