大话设计模式--原型模式 Prototype -- C++实现
2013-10-09 10:35
411 查看
1. 原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。。。
注意: 拷贝的时候是浅拷贝 还是 深拷贝, 来考虑是否需要重写拷贝构造函数。
关键在于: virtual Prototype* clone(); 克隆函数。。。返回一个克隆的对象。
实例: 以深拷贝为例
prototype.h prototype.cpp
main.cpp
注意: 拷贝的时候是浅拷贝 还是 深拷贝, 来考虑是否需要重写拷贝构造函数。
关键在于: virtual Prototype* clone(); 克隆函数。。。返回一个克隆的对象。
实例: 以深拷贝为例
prototype.h prototype.cpp
#ifndef PROTOTYPE_H #define PROTOTYPE_H class Prototype { public: int a; char *str; Prototype(int b, char* cstr); Prototype(const Prototype &cp); ~Prototype(); void show(); virtual Prototype* clone(); }; #endif // PROTOTYPE_H
#include "prototype.h" #include <string.h> #include <stdio.h> Prototype::Prototype(int b, char* cstr) { a = b; str = new char[b]; strcpy(str, cstr); } Prototype::~Prototype() { delete str; } Prototype::Prototype(const Prototype &cp) { a = cp.a; str = new char[a]; if(str!=0) strcpy(str, cp.str); } Prototype* Prototype::clone() { return new Prototype(a, str); } void Prototype::show() { printf("a: %d, str: %s\n", a, str); }
main.cpp
#include <iostream> #include "prototype.h" #include <string.h> #include <stdio.h> using namespace std; int main() { cout << "Prototype test !" << endl; Prototype *p = new Prototype(6, "hello"); Prototype *p1 = p->clone(); p1->show(); return 0; }
相关文章推荐
- 大话设计模式--原型模式 Prototype -- C++实现
- 大话设计模式C++实现-第9章-原型模式
- 设计模式之 原型模式(prototype)(C++实现 深拷贝 + 浅拷贝版本[bug])
- 原型模式(Prototype)C++实现
- 23种设计模式之原型模式(创建型,5 Prototype,c++实现)
- 大话设计模式——原型模式(C++简历实现)
- 设计模式C++实现(4)——原型模式(Prototype)
- 大话设计模式c++实现--原型模式
- 原型模式(Prototype)C++实现
- C++主题——Prototype原型模式
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- 《大话设计模式》读书笔记之C++实现--chapter22桥接模式
- 大话设计模式C++实现-第27章-解释器模式
- 设计模式C++实现(5)——原型模式、模板方法模式
- 大话设计模式C++实现-第10章-模板方法模式
- (C++实现)——原型模式(Prototype Pattern)
- Rhyme/Java 设计模式之原型模式prototype通过clone方法和反序列化实现深复制
- 《大话设计模式》读书笔记之C++实现--chapter27解释器模式
- 《大话设计模式》- 策略模式 - C++实现
- 233_尚学堂_高淇_java300集最全视频教程_【GOF23设计模式】_原型模式_prototype_浅复制_深复制_反序列化实现深复制