原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。意思就是从A的实例得到一份与A内容相同,但是又互不干扰的实例B。
1 class base 2 { 3 public : 4 base(const char *str); 5 base(base &obj); 6 virtual ~base(); 7 virtual base *clone() 8 { 9 base* b = new base(); 10 *b = *this; 11 return b; 12 } 13 14 private : 15 char *str; 16 }; 17 18 class baseA : public base 19 { 20 public : 21 baseA(const char *str); 22 baseA(const baseA &a); //拷贝构造 23 virtual base *clone() //克隆 24 { 25 baseA* b = new baseA(); //new一份新的实例 26 *b = *this; //拷贝实例内容 27 return b; 28 } 29 }; 30 31 base *b1 = new baseA("A"); 32 base *b2 = b1->clone(); //克隆,b2即是b1的一份内容相同,且互不干扰的实例