原型模式:用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件.
涉及到對深複製淺複製的理解.
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 #include2 #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 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。這裡寫描述 優...