設計模式 1 2 工廠模式

2021-07-04 12:28:47 字數 2723 閱讀 5144

工廠模式:

乙個工廠專門用來產生a型號的單核,另乙個工廠專門用來生產b型號的單核。客戶要做的就是找好工廠,比如要a型號的核,就找a工廠要;否則找b工廠要,不再需要告訴工廠要什麼型號的處理器核了。

工廠方法:

定義建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使類的例項化延遲到其子類。

優點:增加新功能只需要增加新工廠和新產品類

沒有修改的變化,只有擴充套件的變化。工廠方法是簡單工廠的進一步抽象和推廣。

缺點:將邏輯從工廠搬到客戶端,想要加功能,本來改工廠類的,現在修改客戶端。

/*工廠模式缺點:

每增加一種產品,就需要增加乙個物件的工廠。相比簡單工廠,需要更多的類。

*/void process()

factoryb factoryb;

shared_ptrptrb = factoryb.instance();

if(ptrb) }

int main(int argc,char* argv)

factory.h

#ifndef factory_h

#define factory_h

#include #include "singlecore.h"

class factory

;#endif

factorya.h

#ifndef factorya_h

#define factorya_h

#include "factory.h"

#include class factorya :

public factory

;#endif

factoryb.h

#ifndef factoryb_h

#define factoryb_h

#include "factory.h"

#include class factoryb :

public factory

;#endif

factorya.cpp

#include "factorya.h"

#include "singlecorea.h"

factorya::factorya(void)

factorya::~factorya(void)

//生產a核的工廠

std::shared_pt***ctorya::instance()

factoryb.cpp

#include "factoryb.h"

#include "singlecoreb.h"

factoryb::factoryb(void)

factoryb::~factoryb(void)

std::shared_pt***ctoryb::instance()

singlecore.h

#ifndef singlecore_h

#define singlecore_h

class singlecore

;#endif

singlecorea.h

#ifndef singlecorea_h

#define singlecorea_h

#include "singlecore.h"

class singlecorea :

public singlecore

;#endif

singlecoreb.h

#ifndef singlecoreb_h

#define singlecoreb_h

#include "singlecore.h"

class singlecoreb :

public singlecore

;#endif

singlecorea.cpp

#include "singlecorea.h"

#include using namespace std;

singlecorea::singlecorea(void)

singlecorea::~singlecorea(void)

void singlecorea::show()

singlecoreb.cpp

#include "singlecoreb.h"

#include using namespace std;

singlecoreb::singlecoreb(void)

singlecoreb::~singlecoreb(void)

void singlecoreb::show()

設計模式 抽象工廠模式(12)

一 定義 抽象工廠模式提供乙個建立一系列相關或相互依賴的介面,而無需指定他們他們具體的類。二 框架運用 spring中bean的獲取 三 實戰 1 介面 實現類 public inte ce iproduct component public class producta implements ip...

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...