小白設計模式入門(3) 工廠方法模式

2021-08-23 14:00:55 字數 1700 閱讀 3910

簡單工廠模式的缺點中,有一條是:新增新產品時必須修改簡單工廠方法,可能會造成簡單工廠的實現邏輯過於複雜。工廠方法模式可以解決這個問題。

其它設計模式可以參考設計模式總結

完整示例可以參考我的github

這是在簡單工廠的教程裡,我們定義了裝置抽象介面和裝置類

///

/// 裝置抽象介面

///public

inte***ce iequip

////// gps裝置

///public

class gps : iequip

}///

/// 慣性測量單元裝置

///public

class imu : iequip

}

這裡新增乙個裝置建立的抽象類和兩個裝置建立的工廠類,就變成了乙個工廠方法模式

public

inte***ce iequipcreator

////// gps的工廠方法

///public

class gpsfactory : iequipcreator

}///

/// 慣性測量單元的工廠方法

///public

class imufactory : iequipcreator

}

工廠方法模式下如果需要新增裝置,這裡給了新增攝像頭裝置的示例

public

class camerafactory : iequipcreator

}///

/// 攝像頭裝置

///public

class camera : iequip

}

呼叫示例

iequipcreator iec;

string str1;

//已經有了gps和imu類

iec = new gpsfactory();

iequip _gps = iec.createfactory();

str1 = _gps.getname();

invoke(new show(showtextbox), new

object );

iec = new imufactory();

iequip _imu = iec.createfactory();

str1 = _imu.getname();

invoke(new show(showtextbox), new

object );

//現在新增camera類,新增和呼叫時都不需要對原有類進行修改

iec = new camerafactory();

iequip _camera = iec.createfactory();

str1 = _camera.getname();

invoke(new show(showtextbox), new

object );

使用工廠方法實現的系統,如果系統需要新增新產品時,我們可以利用多型性來完成系統的擴充套件,對於抽象工廠類和具體工廠中的**都不需要做任何改動。簡單工廠模式中則需要修改工廠類中的實現(具體指新增case語句)。

工廠方法模式通過物件導向程式設計中的多型性來將物件的建立延遲到具體工廠中,從而解決了簡單工廠模式中存在的問題,也很好地符合了開放封閉原則(即對擴充套件開發,對修改封閉)。

設計模式 3 工廠方法模式

1.意圖 定義乙個用於建立物件的的介面,讓子類決定例項化哪乙個類.2.適用性 當乙個類不知道它必須所建立的物件的類的時候。當乙個類希望由它的子類來指定它所建立的物件的時候。3.抽象工廠和工廠方法的區別 抽象工廠 模式依賴於 工廠方法 模式的。因此,抽象工廠強調的是前面的動詞 抽象 也就是說,你將工廠...

設計模式 3 工廠方法模式

定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使得乙個類的例項化延遲到了其子類。抽象工廠介面,用於建立計算物件 public inte ce ifactory 抽象計算介面,表示用於實現的業務 public inte ce calculate 具體工廠類,實現抽象工廠介面,返回...

設計模式(3)工廠方法模式

簡單工廠設計模式的思路,決定了每次新增一種具體的產品時,就需要更改工廠內部的產品構成。因為開閉原則,決定了對外開放介面,對內封閉的思路,工廠方法設計模式,不在使用工廠類統一建立所有的具體產品,不同工廠針對不同的產品,新增產品時,需要同時新增對應的工廠。工廠方法模式 定義乙個用於建立物件的介面,但是讓...