[设计模式]原型模式(Prototype)
来源:互联网 发布:java多线程 lock 编辑:程序博客网 时间:2024/05/16 17:07
1. 意图
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
2. 结构与参与者
3. 代码示例
#include<iostream>#include <vector>#include <string>using namespace std;class Prototype //抽象基类 { private:string m_strName;public: Prototype(string strName):m_strName(strName){}Prototype() { m_strName = " "; }void Set_name(string strName){m_strName=strName;}void Show() {cout<<m_strName<<endl;}virtual Prototype* Clone() = 0 ; } ; // class ConcretePrototype1 class ConcretePrototype1 : public Prototype { public: ConcretePrototype1(string strName) : Prototype(strName){}ConcretePrototype1(){}virtual Prototype* Clone() { ConcretePrototype1 *p = new ConcretePrototype1() ; *p = *this ; //深复制对象 return p ; } } ; // class ConcretePrototype2 class ConcretePrototype2 : public Prototype { public: ConcretePrototype2(string strName) : Prototype(strName){}ConcretePrototype2(){}virtual Prototype* Clone() { ConcretePrototype2 *p = new ConcretePrototype2() ; *p = *this ; //深复制对象 return p ; } } ; //客户端int main(){string str="xiaowang";ConcretePrototype1* test = new ConcretePrototype1("小王");ConcretePrototype1* test2 = (ConcretePrototype1*)test->Clone();ConcretePrototype2* test3 = (ConcretePrototype2*)test2->Clone();test2->Set_name(str);test->Show();test2->Show();test3->Show();return 0;}
- 原型(Prototype)设计模式
- 设计模式-原型设计模式(Prototype)
- 设计模式-原型设计模式(Prototype)
- 设计模式 原型Prototype
- prototype(原型设计模式)
- 设计模式--Prototype(原型)
- Prototype(原型)设计模式
- 设计模式-prototype原型
- 设计模式之原型模式(Prototype)
- 设计模式--原型模式(Prototype)
- 设计模式之原型模式(Prototype)
- 设计模式-原型模式(Prototype Pattern)
- 设计模式---原型模式(Prototype)
- 设计模式 (五)原型模式(Prototype)
- 设计模式 (五)原型模式(Prototype)
- 设计模式 (五)原型模式(Prototype)
- 设计模式prototype(原型模式)
- [设计模式]原型模式(Prototype)
- 3_20130307_添加界面
- java synchronized
- ios 清除UIScrollView的内容
- C++ 动态开辟空间
- Java中Runtime.getRuntime().exec()错误:Cannot allocate memory!
- [设计模式]原型模式(Prototype)
- Oracle动态执行语句(Execute Immediate)
- Modules
- django book 制作
- HTML+CSS+JavaScript的头部信息里你不知道的事
- git 更新指定分支 指定文件
- 使用命令行和Eclipse两种方式编译Sonatype Nexus
- Oracle创建表空间
- svn 打tag 命令