設計模式(建立型模式)

2021-09-26 02:02:22 字數 2892 閱讀 2197

開放封閉原則:類的改動是通過增加**實現的,不是修改源**。

依賴倒置原則:依賴於抽象(通過純虛函式創造介面)

定義:保證乙個類只有乙個例項,並提供乙個訪問他的全域性訪問點。

可以分為懶漢式和餓漢式。

1.需要靜態指標(多個物件共享一塊記憶體)

2.構建函式私有(保證不能在類的外部建立物件)

3.提供靜態成員函式用於建立物件

#include#includeusing namespace std;

class single

public:

static single *getinstance() //提供靜態成員函式用於建立物件

return mintance;

} int getcount()

void release() }

}; single *single ::minstance = null; //懶漢式

// single *single ::minstance = new single //餓漢式

int single :: count = 0;

int mian()

;class add : public operator

}; class sub : public operator

};class factory

if(n == "減")

return opt;

}};int main()

工廠方法類的核心是乙個抽象工廠類,乙個工廠只生產一種產品

具體工廠類都有共同的介面

當系統擴充套件需要新增新的產品物件時,僅僅需要新增乙個具體物件以及乙個具體工廠物件,原有工廠物件不需要進行任何修改,也不需要修改客戶端,很好的符合了「開放-封閉」原則。

#include using namespace std;

class fruit;

};

class banana : public fruit

};class pair : public fruit

};class factory ;

}; class bananafactory : public factory

};int main()

抽象工廠模式可以向客戶端提供乙個介面,使得客戶端在不必指定產品的具體型別的情況下,能夠建立多個產品族的產品物件。

乙個工廠可以生產一系列的產品

優點:1.隔離了具體類的生產;

2.當乙個產品族中的多個物件被設計成一起工作時,能保證客戶端始終只使用同乙個產品族中的物件;

3.很方便的增加新的具體工廠和產品族;

缺點:增加新的產品等級結構時很複雜;

#include using namespace std;

class cpu //抽象基類

; class intel : public cpu

};class arm : public cpu

};class harddisk //抽象基類 ;

class xijie : public harddisk

};

class samsung : public harddisk

};

class factory

;

class dell : public factory

harddisk *createharddisk()

};class acer : public factory

harddisk *createharddisk()

};class computer

void work()

};int main()

簡單工廠 :用來生產同一等級結構中的任意產品。(對於增加新的產品,無能為力)

工廠方法 :用來生產同一等級結構中的固定產品。(支援增加任意產品)

抽象工廠 :用來生產不同產品族的全部產品。(對於增加新的產品,無能為力;支援增加產品族)

適用情況:乙個物件的構建比較複雜,將乙個物件的構建和物件的表示進行分離。

factory模式:不考慮物件的組裝過程,而直接生成乙個我想要的物件。

builder模式:先乙個個的建立物件的每乙個部件,再統一組裝成乙個物件。

factory模式所解決的問題:工廠生產產品。

builder模式所解決的問題:工廠控制產品生成器組裝各個部件的過程,然後從產品生成器中得到產品。

#include using namespace std;

class door

void show()

};class window

void show()

};class house

void show()

};class builder

};class common : public builder

};class villa : public builder

};int main()

採取複製原型物件的方法來建立物件的例項。

由原型物件自身建立目標物件。

目標物件是原型物件的乙個轉殖。

根據物件轉殖深度層次的不同,有淺度轉殖與深度轉殖。

#include #include using namespace std;

class person

; class student : public person

person *clone()

void show()

};int main()

設計模式 建立型模式 原型模式

1 原型模式 prototype模式 是指 用原型例項指定建立物件的種類,並且通過拷貝這些原型,建立新的物件 2 原型模式是一種建立型設計模式,允許乙個物件再建立另外乙個可定製的物件,無需知道如何建立的細節 3 工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型...

設計模式 建立型模式

建立型模式 與物件的建立有關。1 簡單工廠模式 靜態工廠 簡單工廠關聯具體類,通過簡單工廠來建立具體的類。封裝變化到簡單工廠裡面去。工廠類 具體類 2 工廠模式 抽象工廠 具體工廠 具體類 要是新增新的類,只需要擴充套件就可以了。他們對外的行為是一致的。3 抽象工廠 抽象工廠 具體工廠 具體類 具體...

設計模式 建立型模式

建立型模式 工廠方法 核心 客戶端呼叫具體的工廠,讓工廠去決定例項化哪個具體的類。核心 為工廠類建立對應的具體的類,表現為和對應的具體類的依賴關係。抽象工廠類 inte ce productfactory 具體a工廠 class concreteproductfactorya productfact...