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类(框架)使用。原型