原文参考书籍:《Design Patterns Explained Simply》
一、定义
根据保存的原型寻找需创建对象的类型,再通过拷贝(clone)依据类型创建新的对象。
二、结构
三、要点
- 原型模式中,Client并不知道要克隆对象的实际类型,只需知道基类类型即可。
- 克隆对象比直接创建对象的优点在于,克隆是将原有对象的行为属性带到了新的对象中。
- C++没有克隆方法,要克隆一个对象,需要借助拷贝构造函数(Copy Constructor)来实现。拷贝构造函数中实现拷贝对象有浅拷贝和深拷贝。
四、代码
1. prototype.h
#ifndef PROTOTYPE_H
#define PROTOTYPE_H
#include <iostream>
using namespace std;
enum imageType
{
LSAT,SPOT
};
class Image
{
public:
virtual void draw()=0;
static Image *findAndClone(imageType);
protected:
virtual imageType returnType()=0;
virtual Image *clone()=0;
// As each subclass of Image is