Gof 設計模式 建立型

2021-07-12 01:14:04 字數 3627 閱讀 5863

#includeusing namespace std;

#if 0

class a

};class b

};class c :public a, public b

;int main()

#endif

//單例模式

#if 0

class singleclass

//unlock();

return ms;

} void test()

private:

singleclass(){}

static singleclass *ms;

};singleclass* singleclass::ms = null;

int main()

#endif

// 原型模式

//原型模式是建立型模式的一種,

//其特點在於通過「複製」乙個已經存在的例項來返回新的例項,而不是新建例項。

//被複製的例項就是我們所稱的「原型」,這個原型是可定製的。

//原型模式多用於建立複雜的或者耗時的例項,

//因為這種情況下,複製乙個已經存在的例項使程式執行更高效;

//或者建立值相等,只是命名不一樣的同類資料

#if 0

class resume

virtual ~resume() {}

virtual resume* clone()

virtual void set(char *n) {}

virtual void show() {}

};class resumea : public resume

;resumea::resumea(const char *str)

else

}resumea::~resumea()

resumea::resumea(const resumea &r)

resumea* resumea::clone()

void resumea::show()

class resumeb : public resume

;resumeb::resumeb(const char *str)

else

}resumeb::~resumeb()

resumeb::resumeb(const resumeb &r)

resumeb* resumeb::clone()

void resumeb::show()

int main(int argc, char* argv)

#endif

// 建造模式

//生成器模式(英:builder pattern)是一種設計模式,

//又名:建造模式,是一種物件構建模式。

//它可以將複雜物件的建造過程抽象出來(抽象類別),

//使這個抽象過程的不同實現方法可以構造出不同表現(屬性)的物件。

#if 0

class product;

class producta : public product

};class productb :public product

};class creator

protected:

virtual product *docreateproduct() = 0;

};class creatora : public creator

};class creatorb : public creator

};int main(int argc, char **argv)

#endif

// 工廠方法模式

//工廠方法模式(英語:factory method pattern)是一種實現了「工廠」概念的物件導向設計模式。

//就像其他建立型模式一樣,它也是處理在不指定物件具體型別的情況下建立物件的問題。

//工廠方法模式的實質是「定義乙個建立物件的介面,但讓實現這個介面的類來決定例項化哪個類。

//工廠方法讓類的例項化推遲到子類中進行。

#if 0

class iproduct

~iproduct(){}

};class android : public iproduct{};

class iphone : public iproduct{};

class ifactory

virtual ~ifactory(){}

virtual iproduct *getproduct() = 0;

};class androidfactory : public ifactory

~androidfactory(){}

iproduct *getproduct() };

};int main()

#endif

//抽象工廠模式(英語:abstract factory pattern)是一種軟體開發設計模式。

//抽象工廠模式提供了一種方式,可以將一組具有同一主題的單獨的工廠封裝起來。

//在正常使用中,客戶端程式需要建立抽象工廠的具體實現,然後使用抽象工廠作為介面來建立這一主題的具體物件。

//客戶端程式不需要知道(或關心)它從這些內部的工廠方法中獲得物件的具體型別,

//因為客戶端程式僅使用這些物件的通用介面。抽象工廠模式將一組物件的實現細節與他們的一般使用分離開來。

//abstractfactory 模式和 factory 模式的區別是初學(使用)設計模式時候的乙個容易引

//起困惑的地方。 實際上, abstractfactory 模式是為建立一組( 有多類) 相關或依賴的物件提

//供建立介面, 而 factory 模式正如我在相應的文件中分析的是為一類物件提供建立介面或延

//遲物件的建立到子類中實現。並且可以看到, abstractfactory 模式通常都是使用 factory 模

//式實現( concretefactory1)。

class abstractiproduct

~abstractiproduct(){}

};class androidphone : public abstractiproduct{};

class androidpad : public abstractiproduct{};

class iphone : public abstractiproduct{};

class ipad : public abstractiproduct{};

class ifactory

virtual ~ifactory(){}

virtual abstractiproduct *getpad() = 0;

virtual abstractiproduct *getphone() = 0;

};class androidfactory : public ifactory

~androidfactory(){}

abstractiproduct *getphone()

abstractiproduct *getpad() };

abstractiproduct *getpad() };

int main()

GoF23設計模式 建立型設計模式 單例模式

使用單例模式獲取物件時有且只有乙個物件 單例模式有五種方式 常用 餓漢式 懶漢式 其他 雙重檢測鎖式 內部類式 列舉式 詳解 package com.project.singleton 餓漢式單例 有點 效率高,執行緒安全 缺點 不能懶載入 public class hungrysingleton ...

建立型設計模式

建立型設計模式對類的建立例項化過程進行抽象,將物件的建立和物件的使用分離。簡單工廠模式 使用頻率4星 工廠方法模式 使用頻率5星 抽象工廠模式 使用頻率5星 建造者模式 使用頻率2星 原型模式 使用頻率3星 單例模式 使用頻率4星 toc 簡單工廠模式將物件建立和物件使用相分離,降低了系統耦合度。優...

建立型設計模式

設計模式分為總的來說分為三大類 建立型模式 五種,工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式 結構型模式 七種,介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式 行為模式 十一種,策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模式 狀...