第四天 原型模式 建造者模式

2022-03-12 07:17:22 字數 2051 閱讀 4445

原型模式:用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件. 

涉及到對深複製淺複製的理解.

view code

1

class

uncopyable

25 ~uncopyable(){}67

private

:8 uncopyable(const uncopyable&);

9 uncopyable& operator=(const uncopyable&);

10};

1112 template

13class icloneable : private

uncopyable14;

1819 #include 20 #include

21class prototype : public icloneable22

2829 ~prototype()

3031

virtual prototype*clone()

3237

38void setchar(char

c)39

4243

private:44

void copyself(const prototype&rhs)

4549

char*ch_;

50int

integer_;

51};

5253 #include 54

using

std::shared_ptr;

5556 template

57 t* createinstance(icloneable*clone)

5861

6263

intmain()

64

建造者模式:將乙個複雜物件的構建與它的表示分離

,使得同樣的構建過程可以建立不同的表示.

建造者模式是當在建立複雜物件的演算法應該獨立於該物件的組成部分以及他的裝配方式時適用的模式

建造者更重視產品建造時的邏輯順序,但抽象工廠更重視生產出不同型號的產品,而不關心順序.

view code

1 #include 

2 #include 3

using

std::cout;

4using

std::endl;

5using std::string;6

class

car7

1314

void setbody(const

string&body)

1518

19void

show()

2024

2526

private:27

string

wheel_;

28string

body_;

29};

3031

class

carbuilder

39protected:40

car car_;

41};

4243

44class bmwbuilder : public

carbuilder

4550

virtual

void

builderwheel()

53};

5455

class kiabuilder : public

carbuilder

5661

virtual

void

builderwheel()

64};

6566

class

director

6772

car buildcar()

7378

79private

:80 carbuilder*builder_;

81};

8283

intmain()

84

第四天 建立型模式 原型模式

零 原型模式 一 身邊的例子 二 什麼情況下使用 當我們已有乙個物件,並希望建立該物件的乙個完整副本時 在我們知道物件的某些本分會被改變,但有希望保持原有的物件不變時 我們想複製乙個複雜的物件時。三 應用案例 下面我們來看乙個案例,利用原型模式展示乙個圖書的各個版本資訊 import copy fr...

設計模式 建造者 原型模式

建造者模式 使用多個簡單的物件一步一步構建成乙個複雜的物件。我們假設乙個快餐店的商業案例,其中,乙個典型的 可以是乙個漢堡 burger 和一杯冷飲 cold drink 漢堡 burger 可以是素食漢堡 veg burger 或雞肉漢堡 chicken burger 它們是包在紙盒中。冷飲 co...

設計模式 單例模式 建造者模式 原型模式

通常我們讓乙個全域性變數使得乙個物件被訪問,但它不能防止你例項化多個物件。乙個最好的辦法就是,讓類自身負責八寸他的唯一例項。這個類可以保證沒有其他例項可以被建立,並且它可以提供乙個訪問該例項的方法。單例模式 singletion 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。這裡寫描述 優...