C++设计模式之四:Prototype(原型模式)
2012-05-28 15:59
441 查看
一、意图:
用原型实例制定创建对象的种类,并且通过拷贝创建新的对象;
二、类图:
三、组成元素:
Prototype:声明克隆自身的接口;
ConcretePrototype:实现克隆自身的操作;
四、实现代码:
clone:是浅克隆;
deepclone:是深克隆;
用原型实例制定创建对象的种类,并且通过拷贝创建新的对象;
二、类图:
三、组成元素:
Prototype:声明克隆自身的接口;
ConcretePrototype:实现克隆自身的操作;
四、实现代码:
#include <iostream> using namespace std; class Prototype { private: int num; char* name; public: virtual Prototype* clone()=0; virtual Prototype* deepclone()=0; virtual void sayHello()=0; }; class ConcretePrototype:public Prototype { private: char* name; int num; public: Prototype* clone() { return new ConcretePrototype(this->name,this->num); } Prototype* deepclone() { <strong> int tempnum; char* tempname=new char[strlen(name)+1]; tempnum=num; strcpy(tempname,name);</strong> return new ConcretePrototype(tempname,tempnum); } void sayHello() { cout<<"ConcrePrototype:"<<this->name<<":"<<this->num<<endl; } ConcretePrototype(char* na,int n) { name=na; num=n; }; }; void main() { Prototype* pPrototype1=new ConcretePrototype("conan",100); Prototype* pPrototype11=pPrototype1->clone(); pPrototype1->sayHello(); pPrototype11->sayHello(); Prototype* pPrototype2=new ConcretePrototype("柯南",200); Prototype* pPrototype22=pPrototype2->deepclone(); pPrototype2->sayHello(); pPrototype22->sayHello(); }
clone:是浅克隆;
deepclone:是深克隆;
相关文章推荐
- 设计模式C++实现(4)——原型模式(Prototype)
- c++设计模式之原型模式Prototype
- 23种设计模式之原型模式(创建型,5 Prototype,c++实现)
- C++设计模式-Prototype原型模式
- C++设计模式之Prototype(原型)模式
- C++设计模式-Prototype原型模式
- C++设计模式2-原型模式Prototype
- c++设计模式之原型模式(prototype)
- 设计模式(C++版)之(prototype) 原型模式
- 设计模式C++原型模式(Prototype)
- 程序设计模式(四) C++ 原型(Prototype)模式
- C++设计模式6--原型模式Prototype--原始对象的克隆
- 解析设计模式中的Prototype原型模式及在C++中的使用
- C++设计模式之九--Prototype原型模式
- C++设计模式之 —— 原型模式 Prototype
- C++设计模式-Prototype原型模式
- 设计模式C++描述----08.原型(Prototype)模式
- 设计模式之 原型模式(prototype)(C++实现 深拷贝 + 浅拷贝版本[bug])
- c++设计模式之原型模式Prototype
- 设计模式C++描述----08.原型(Prototype)模式