大話設計模式 工廠模式家族

2021-06-13 13:29:33 字數 3372 閱讀 3347

在工廠模式家族中最出名的是工廠三姐妹,根據抽象的程度不同分為簡單工廠、工廠模式和抽象工廠模式。他們在我們平時的程式設計中會經常使用。所以我們應該詳細地了解一下他們三者之間優缺點。

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

//客戶端**

static void main(string args)

}//operation運算類

public class operation

set

}public double numberb

set

}public virtual double getresult()

}//加減乘除類

class operationadd : operation //加法類,繼承運算類

}class operationsub : operation //減法類,繼承運算類

}class operationmul : operation //乘法類,繼承運算類

}class operationdiv : operation //除法類,繼承運算類

}//簡單運算工廠類

class operationfactory

return oper;}}

1、

工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據給定的資訊,決定究竟應該建立哪個具體類的

例項。2

、明確了各自的職責和權利,有利於整個軟體體系結構的優化。1、

由於工廠類集中了所有例項的建立邏輯,違反了高內聚

低耦合原則,將全部建立邏輯集中到了乙個工廠類中;2、

它所能建立的類只能是事先考慮到的,

每次擴充套件都需要更改工廠類,違反了開放封閉原則。

簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類的例項。

用於建立物件的介面,讓子類決定例項化哪乙個類。工廠模式對類的例項化延遲到其子類。

}//user類

class user

set

}private string _name;

public string name

set }}

//iuser介面

inte***ce iuser

//sqlserveruser類

class sqlserveruser : iuser

public user getuser(int id)

}//accessuser類

class accessuser : iuser

public user getuser(int id)

}//ifactory介面

inte***ce ifactory

//sqlserve***ctory :ifactory

class sqlserve***ctory : ifactory

}//accessfactory類

class accessfactory:ifactory

}1、克服了簡單工廠違背開放封閉原則的缺點,保持了封裝的優點。

工廠模式集中封裝了物件的建立,更換物件時更加容易。

2、使用了多型性,保持了簡單工廠的優點。

3、降低耦合度。降低了客戶程式與產品物件的耦合。

建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。

}class user //使用者類

set

}private string _name;

public string name

set }}

//iuser介面

inte***ce iuser

// iuser介面的子sqlserveruser類,用於訪問sql server的user

class sqlserveruser :iuser

public user getuser(int id)

}// iuser介面的子accessuser類,用於訪問access的user

class accessuser :iuser

public user getuser(int id)

}//增加乙個department表

class department

set

}private string _deptname;

public string deptname

set }}

//idpartment介面

inte***ce idepartment

//sqlserverdepartment類

class sqlserverdepartment : idepartment

public department getdepartment(int id)

}//accessdepartment類

class accessdepartment : idepartment

public department getdepartment(int id)

}//抽象工廠的介面

inte***ce ifactory

class sqlserve***ctory : ifactory

public idepartment createdepartment()

}class accessfactory : ifactory

public idepartment createdepartment()

}抽象工廠模式除了具有工廠方法模式的優點外,最主要的優點就是可以在類的內部建立不同的產品物件。

對於增加需求,擴充套件程式時,需要增加許多子類,使得程式變得臃腫,麻煩。(此時可以利用放射

+抽象工廠的方法避免)。

無論是簡單工廠模式,工廠模式,還是抽象工廠模式,他們都屬於工廠模式,

並且是建立型模式,

在形式和特點上也是極為相似的,他們的最終目的都是為了解耦。

大話設計模式 工廠模式 策略模式

工廠模式 以商場收費系統為例。打折 正常 送積分等手段 首先,有乙個抽象類cashsuper 收費操作,有三個繼承cashsuper的子類 cashnormal具體操作,重寫函式 其次,寫乙個cashfactory工廠類,來生產具體的操作類cashnormal等。策略模式 先寫乙個策略抽象類,然後寫...

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

學習c 1年的菜鳥,開始學習設計模式,學過了留下痕跡,歡迎一起談論學習。該模式總結 利用多型例項化不同的物件。include stdafx.h include include using namespace std class operate operate void setnumber1 int ...

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

最近在學習 大話設計模式 這本書,此本生動易動,其中有一些例子,我把 分寫如下。大話設計模式 無錯便是優?簡單工廠模式 下面以 乙個計算器的實現 operation運算類 public abstract class operation public void setnumbera public do...