设计模式之Prototype(c++)

原创 2013年12月04日 22:03:43

Prototype模型:

作用:

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象----克隆(clone)对象。


Prototype模型类图如下:

形象说明:如果客户想配钥匙(ConcretePrototype),就可以拿着钥匙去配钥匙的店铺,店铺老板会根据配的钥匙原型,给你配(Clone)钥匙!


具体简单的实例实现:

/*Prototype.hxx*/

#ifndef _PROTOTYPE_H_
#define _PROTOTYPE_H_

class Prototype
{
public:
        virtual ~Prototype();
        virtual Prototype* Clone() const = 0;
protected:
        Prototype();
};

class ConcretePrototype:public Prototype
{
public:
        ConcretePrototype();
        ConcretePrototype(const ConcretePrototype& cp);
        ~ConcretePrototype();
        Prototype* Clone() const;
};
#endif //~_PROTOTYPE_H_

/*Prototype.cxx*/

#include "Prototype.hxx"
#include <iostream>

using namespace std;

Prototype::Prototype()
{

}

Prototype::~Prototype()
{

}

Prototype* Prototype::Clone() const 
{
	return 0;
}

//concretePrototype

ConcretePrototype::ConcretePrototype()
{

}

ConcretePrototype::~ConcretePrototype()
{

}

ConcretePrototype::ConcretePrototype(const ConcretePrototype& cp)
{
	cout<< "ConcretePrototype copy..." << endl;
}

Prototype* ConcretePrototype::Clone() const
{
	return new ConcretePrototype(*this);
}

/*main.cxx*/

#include "Prototype.hxx"

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
	Prototype* p = new ConcretePrototype();
	Prototype* p1 = p->Clone();

	cout << p <<"||" << p1 << endl;
	
	delete p;
	p = NULL;
	if (p1)
	{
		delete p1;
		p1 = NULL;
	}
	return 0;
}

执行结果:

liujl@liujl-ThinkPad-Edge-E431:~/mysource/Design_model/Prototype$ g++ -o main main.o Prototype.o
liujl@liujl-ThinkPad-Edge-E431:~/mysource/Design_model/Prototype$ ./main 
ConcretePrototype copy...
0xf11010||0xf11030

参考文档:

1、c++设计模式.pdf

2、常见设计模式的解析和实现(C++)之四-Prototype模式

我所理解的设计模式(C++实现)——原型模式(Prototype Pattern)

解决的问题: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这个其实和C++的拷贝构造函数的作用是一致的,实际上就是动态抽取当前对象运行时的状态。 类图结构:      ...

C++设计模式-Prototype原型模式

作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言...

我与C++设计模式(四)——prototype pattern

我故意将bia

设计模式的解析和实现(C++)之四-Prototype模式

作用:     用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。     UML结构图:     抽象基类:     1)Prototype:虚拟基类,所有原型的基...

设计模式之 原型模式(prototype)(C++实现 深拷贝 + 浅拷贝版本[bug])

本文介绍设计模式中的原型模式。 本质上其实就是克隆。 下面以个人简历很工作经历为例。 深拷贝版本: #include #include #include using namespa...

常见设计模式的解析和实现(C++)之四-Prototype模式

作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 UML结构图: 抽象基类: 1)Prototype:虚拟基类,所有原型的基类,提供Clone接口函数 接...

设计模式C++原型模式(Prototype)

意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 适用性: 当一个系统应该独立于他的产品创建、构成和表示时,需要使用原型模式 当要实例化的类是在运行时刻指定时,...

我所理解的设计模式(C++实现)——原型模式(Prototype Pattern)

解决的问题: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这个其实和C++的拷贝构造函数的作用是一致的,实际上就是动态抽取当前对象运行时的状态。 类图结构:  ...

C++设计模式-Prototype原型模式

作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言...

c++设计模式之原型模式Prototype

/************************************************************************/ /* 原型模式 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式之Prototype(c++)
举报原因:
原因补充:

(最多只允许输入30个字)