设计模式之Prototype模式

关于这个模式,突然想到了小时候看的《西游记》,齐天大圣孙悟空再发飙的时候可以通过自己头上的3根毛立马复制出来成千上万的孙悟空,对付小妖怪很管用(数量最重要)。Prototype模式也正是提供了自我复制的功能,就是说新对象的创建可以通过已有对象进行创建。在C++中拷贝构造函数(Copy Constructor)曾经是很对程序员的噩梦,浅层拷贝和深层拷贝的魔魇也是很多程序员在面试时候的快餐和系统崩溃时候的根源之一。

Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone),Clone()实现和具体的实现语言相关,在C++中我们将通过拷贝构造函数实现之。

Prototype.h

#ifndef __PROTOTYPE_H_
#define __PROTOTYPE_H_
class CPrototype
{
public:
	CPrototype();
	~CPrototype();
	virtual CPrototype* Clone()=0;
};
#endif


 

Prototype.cpp

#include "Prototype.h"
CPrototype::CPrototype()
{

}

CPrototype::~CPrototype()
{

}


ConcretePrototype.h

#ifndef _CONCRETEPROTOTYPE_H_
#define _CONCRETEPROTOTYPE_H_
#include "Prototype.h"
class CConcretePrototype:public CPrototype
{
public:
	CConcretePrototype();
	CConcretePrototype(CConcretePrototype* pCpro);
	~CConcretePrototype();
	CPrototype* Clone();
private:
	
};
#endif

ConcretePrototype.cpp

#include "ConcretePrototype.h"
#include <iostream>
using namespace std;
CConcretePrototype::CConcretePrototype()
{

}

CConcretePrototype::~CConcretePrototype()
{

}

CConcretePrototype::CConcretePrototype(CConcretePrototype* pCpro)
{
	cout<<"创建对象"<<endl;

}
CPrototype* CConcretePrototype::Clone()
{
	cout<<"开始克隆"<<endl;
	return new CConcretePrototype(this);
}


Main.cpp

#include <iostream>
#include "Prototype.h"
#include "ConcretePrototype.h"
using namespace std;
int main()
{
	CPrototype *pCP=new CConcretePrototype;
	pCP->Clone();
	delete pCP;
	return 0;
}



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值