CPP 設計模式

2021-10-01 21:05:55 字數 3898 閱讀 6753

備忘錄模式

引用文字

設計記錄的節點,儲存記錄

2.設計記錄的儲存: vector list map set 可以使 鍊錶 圖 陣列 樹

3.操作記錄的類,記錄節點狀態,設定節點狀態,顯示節點狀態

策略模式簡單工廠模式

**:

#include #include using namespace std;

class op

};class add : public op

};class sub : public op

};class divv : public op

};class mul : public op

};class fac

}};int main(void)

方法工廠模式

**:

#include #include using namespace std;

class op

};class add : public op

};class sub : public op

};class divv : public op

};class mul : public op

};class ifac

;class addop : public ifac

};class subop : public ifac

};class divop : public ifac

};class mulop : public ifac

};int main(void)

aa;

#include #include class

aa;class singleinstance

static singleinstance *get_instance()

};singleinstance *singleinstance::instance = new singleinstance(1995);

class b:public singleinstance

;int main(void)

; girl:: girl(string s1)

girl::~ girl()

girl::girl()

class gift ;

class gg:public gift

void gift2()

private:

girl mm;

}; gg::gg(girl m)

gg::~gg()

class proxy :public gift

void gift1()

void gift2()

};int main(void)

迭代器模式

命令列模式

#include #include #include using namespace std;

class doing

void action2()

private:

};class command

virtual void do_doing() = 0;

protected:

doing* reciver;

};class action1_command:public command

void do_doing() };

class action2_command :public command

void do_doing() };

class waiter

void do_action()

protected:

command* command;

};class waiter_n

void do_action() }

private:

listcommand;

};int main(void)

責任鏈模式:
#include #include using namespace std;

class request

;class manager

void setsuper(manager *p)

int classid;

manager* super;

string name;

string job;

private:

};class zhuguan:public manager

else

}private:

};class zongjian :public manager

else

}private:

};class zongjingli :public manager

private:

};int main(void)

總覽

概論演算法的特性

演算法的衡量標準

boost array 第一只boost 程式

各個vs 使用的版本不一樣

linux只能自己編譯

boost 的命名空間為boost

boost第乙個程式(array)

#include #include #include using namespace std;

int main(void)

; boost::array::iterator ib = arr.begin();

boost::array::iterator ie = arr.end();

for (;ib!=ie;ib++)

cin.get();

return 0;

}

boost 庫的學習 boost_array_bind_fun_ref

std 方式

**:

#include #include #include #include #include #include "boost/bind.hpp"

using namespace std;

using namespace boost;

class jia:public binary_function

private:

};int main(void)

boost方式
#include #include #include #include #include #include "boost/bind.hpp"

using namespace std;

using namespace boost;

class jia:public binary_function

private:

};void add(int i, int j)

int main(void)

boost::function 庫

boost::ref

raii

智慧型指標 smartpointers 庫

#include using namespace std;

class a

void virtual b()

void virtual c()

private:

};class b :public a

void virtual b()

};typedef void (*pfunc) (void);

int main(void)

cin.get();

return 0;

}

CPP之中介者設計模式

1 故事 公司組織去奧林匹克公園team building,主題是 把信送給加西亞 頭天,組長組織大家秘密商討,主題時如何奪取第二天的ipad2大獎的計畫。由於人員眾多,組長怕大家不認識,要求每個人用一句話形容自己,然後順時針把剩下的所有人描述自己的話再重複出來,這樣經過2輪,名字基本記住了,雖然免...

設計模式 設計模式

物件導向程式設計 oop 的基本概念有 封裝,抽象,繼承,多型等,如何開發出可復用的物件導向軟體一直困擾著軟體開發人員。可復用的物件導向技術包括類的繼承,物件的組合和引數化型別 generic gof的巨著 設計模式 總結出可復用的物件導向的23個設計模式,並且歸類成 建立型模式,結構型模式和行為型...

cpp 編譯器的記憶體分配模式

乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 程式執行時由編譯器自動分配,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。程式結束時由編譯器自動釋放。2 堆區 heap 在記憶體開闢另一塊儲存區域。一般由程式設計師分配釋放,若程式設計師不釋放,程式結...