Prototype Pattern

Prototype.h

#ifndef _PROTOTYPE_H
#define _PROTOTYPE_H

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

class ConcreatePrototype : public Prototype {
public :
    ConcreatePrototype();
    ConcreatePrototype(const ConcreatePrototype &cp);
    ~ConcreatePrototype();
    Prototype *Clone() const;
};

#endif

Prototype.cpp

#include "Prototype.h"
#include <iostream>
using namespace std;

Prototype::Prototype() {}

Prototype::~Prototype() {}

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

ConcreatePrototype::ConcreatePrototype() {}

ConcreatePrototype::~ConcreatePrototype() {}

ConcreatePrototype::ConcreatePrototype(const ConcreatePrototype &cp) {
    cout << "ConcreatePrototypecopy..." << endl;
}

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

Main.cpp

#include "Prototype.h"
#include <iostream>
using namespace std;

int main(int argc, char *argv[]) {

    Prototype *p = new ConcreatePrototype();
    Prototype *p1 = p->Clone();

    return 0;
}
时间: 2024-10-19 09:48:30

Prototype Pattern的相关文章

Constructor Prototype Pattern 原型模式(PHP示例)

当一个类大部分都是相同的只有部分是不同的时候,如果需要大量这个类的对象,每次都重复实例化那些相同的部分是开销很大的,而如果clone之前建立对象的那些相同的部分,就可以节约开销. 针对php的一种实现方式就是__construct()和initialize函数分开分别处理这个类的初始化,construct里面放prototype也就是公共的部分,initialize里面是每个对象特殊的部分.这样我们先建立一个类不initialize,以后每次clone这个类再进行initialize就可以了.

DesignPattern_Java:Prototype Pattern

原型模式 Prototype Pattern Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype. 用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象. Java内置克隆机制: 实现Cloneable接口 覆盖Object的clone()方法. 抽象原型角色(Prototype):该角色是一个抽象角色,

二十四种设计模式:原型模式(Prototype Pattern)

原型模式(Prototype Pattern) 介绍用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象. 示例有一个Message实体类,现在要克隆它. MessageModel using System; using System.Collections.Generic; using System.Text; namespace Pattern.Prototype { /// <summary> /// Message实体类 /// </summary> publi

NET设计模式 第二部分 创建型模式(5):原型模式(Prototype Pattern)

原型模式(Prototype Pattern) ——.NET设计模式系列之六 Terrylee,2006年1月 概述 在软件系统中,有时候面临的产品类是动态变化的,而且这个产品类具有一定的等级结构.这时如果用工厂模式,则与产品类等级结构平行的工厂方法类也要随着这种变化而变化,显然不大合适.那么如何封装这种动态的变化?从而使依赖于这些易变对象的客户程序不随着产品类变化? 意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 结构图 Prototype模式结构图 生活中的例子 Pr

4,原型模式(Prototype Pattern)实际上就是动态抽取当前对象运行时的状态。

原型模式(Prototype Pattern)  实际上就是动态抽取当前对象运行时的状态. Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例.使用Prototype模式创建的实例,具有与原型一样的数据. 1)由原型对象自身创建目标对象.也就是说,对象创建这一动作发自原型对象本身. 2)目标对象是原型对象的一个克隆.也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值. 3)根据对象克隆深度层次的不同,有浅度克

深入浅出设计模式——原型模式(Prototype Pattern)

模式动机在面向对象系统中,使用原型模式来复制一个对象自身,从而克隆出多个与原型对象一模一样的对象.在软件系统中,有些对象的创建过程较为复杂,而且有时候需要频繁创建,原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的意图所在. 模式定义原型模式(Prototype Pattern):原型模式是一种对象创建型模式,用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象.原型模式允许一个对象再创建另外一个可定制的对象,无

24种设计模式--原型模式【Prototype Pattern】

今天我们来讲原型模式,这个模式的简单程度是仅次于单例模式和迭代器模式,非常简单,但是要使用好这个模式还有很多注意事项.我们通过一个例子来解释一下什么是原型模式. 现在电子账单越来越流行了,比如你的信用卡,到月初的时候银行就会发一份电子邮件到你邮箱中,说你这个月消费了多少,什么时候消费的,积分是多少等等,这个是每个月发一次,但是还有一种也是银行发的邮件你肯定有印象:广告信,现在各大银行的信用卡部门都在拉拢客户,电子邮件是一种廉价.快捷的通讯方式,你用纸质的广告信那个费用多高呀,比如我今天推出一个信

设计模式(创建型)之原型模式(Prototype Pattern)

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! 概述 原型模式是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的.原型模式多用于创建复杂的或者耗时的实例, 因为这种情况下,复制一个已经存在的实例可以使程序运行更高效,或者创建值相等,只是命名不一样的同类数据. 原型模式要求对象实现一个可以"克隆"自身的接口,这样就可以通过

JAVA设计模式之 原型模式【Prototype Pattern】

一.概述: 使用原型实例指定创建对象的种类,而且通过拷贝这些原型创建新的对象. 简单的说就是对象的拷贝生成新的对象(对象的克隆),原型模式是一种对象创建型模式. 二.使用场景: 创建新的对象能够通过对已有对象进行复制来获得,假设是相似对象,则仅仅需对其成员变量稍作改动. 三.UML结构图: 四.參与者 (1)    Prototype(抽象原型类):它是声明克隆方法的接口,是全部详细原型类的公共父类,能够是抽象类也能够是接口,甚至还能够是详细实现类. (2)    ConcretePrototy

java中23种设计模式之18-原型模式(Prototype pattern)

class Something{ public String something=null;}class Prototype implements Cloneable{ private String name; public Something aSomething=new Something(); public void setName(String name) { this.name=name; } public String getName() { return name; } publi