template<class T,class sequence=deque<T> > class queue{ ... protected: seqence c; public: //如下徹底利用c的操做函數完成 bool empty() const{return c.empty();} ... };
在上文中 複合表示的關係爲has-a
queue中的內容所有由deque來實現
因爲複合表示的是一個has-a的關係,因此其大小爲其內部各部分之和。框架
在構造時,複合關係的構造是由內而外,先執行內部構造函數,再執行外部。
而析構時正好相反,析構先執行本身,再執行內部的析構函數。
(Base class 的dtor必須是virtual,不然會出現undefined behavior)函數
這種利用另外一個類的指針調用實現功能調用叫委託。spa
繼承表示is a指針
繼承能夠繼承父類的成員code
繼承關係下的構造函數首先調用Base的的default構造函數,而後才執行本身。
繼承關係下的析構函數首先析構本身,而後才調用base的析構函數。繼承
觀察者模式
1,A類有委託容器。
2,A類的容器包含一個能夠繼承的B類。
3,B類可擴展。
4,A類可控制,讓B類有需求的來註冊,註銷。
Composite
1,B類有個容器,能夠放左邊,能夠放右邊。
2,A類作基類,讓左右兩邊都繼承。
3,B類的容器指針指向A類,B類Add控制放左仍是放右。ip
Prototype(Design Patterns Explained Simply)
1,A類建立未知的子類,
2,讓B類建立靜態本身,
3,B類構造是private,原型放到A類的容器(add),
4, B類clone來實現掛到A類框架,擴展A類(框架)使用。原型