Prototype Pattern(原型模式)

/*Prototype.h*/
#ifndef PROTOTYPE_H
#define PROTOTYPE_H

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

class ConcretePrototype:public Prototype
{
public:
    ConcretePrototype();
    ConcretePrototype(const ConcretePrototype &cp);
    ~ConcretePrototype();
    Prototype *Clone() const;
protected:
private:
};
#endif
/*Prototype.cpp*/
#include "Prototype.h"
#include <iostream>

Prototype::Prototype()
{
}

Prototype::~Prototype()
{
}

ConcretePrototype::ConcretePrototype()
{
}

ConcretePrototype::~ConcretePrototype()
{
}

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

Prototype *ConcretePrototype::Clone() const
{
    return new ConcretePrototype(*this);
}
/*main.cpp*/
#include "Prototype.h"
#include <iostream>

int main()
{
    Prototype *p=new ConcretePrototype();
    Prototype *p1=p->Clone();
    return 0;
}
时间: 2024-11-04 00:13:08

Prototype Pattern(原型模式)的相关文章

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

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

设计模式(六)Prototype Pattern 原型模式

通过new产生一个对象非常繁琐,可以使用原型模式 原型模式实现: --Cloneable接口和clone方法 --Prototype模式实现起来最困难的地方是实现内存的复制和操作,Java中提供了clone方法省了大部分事情 案例:多利羊的克隆 package com.littlepage.PrototypePattern; public class Sheep implements Cloneable{ String name; int date; public Sheep(String na

Prototype Pattern 原型模式

7.6 原型模式总结 原型模式作为一种快速创建大量相同或相似对象的方式,在软件开发中应用较为广泛,很多软件提供的复制(Ctrl + C)和粘贴(Ctrl + V)操作就是原型模式的典型应用,下面对该模式的使用效果和适用情况进行简单的总结. 1.主要优点 原型模式的主要优点如下: (1) 当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率. (2) 扩展性较好,由于在原型模式中提供了抽象原型类,在客户端可以针对抽象原型类进行编程,而将具体

(Protype Pattern)原型模式

适用性: 当我们系统中有一些类,在使用的时候都有同样需要大量的创建,而这样的创建是复杂的而且是浪费CPU,内存资源的,为了解决这一问题,就出现了原型模式(深度克隆,浅克隆) 模式思想: 1.  通过使用同一的创建对象方案,尽量避免创建对象复杂过程代码重复出现: 2.  为了节省CPU,内存资源,我们可以让不同的类之间共享一些(业务上允许)资源,从而达到缩小占用内存空间: 3.  这样的一类业务需求本来就具有一定的同一性,我们抽象出一个同一的抽象类(Protype,ICloneable)作为规范,

浅谈设计模式(二):装饰器模式|中介模式|原型模式

装饰器模式(Decorator Pattern) 装饰器模式可用来给一个类动态添加功能,将其装饰成一个新的类.这就是装饰器的概念.看到这里我们可能会想,要达到这种效果,我们用子类继承父类不就可以了吗? 没错装饰器模式,本身是一种继承的替代方案.那既然是替代方案,那么自然就有它不一样的地方. 具体区别在哪里呢? 请看 装饰器模式更灵活:继承时父子类的关系是静态的,而装饰器模式是动态的,装饰类和被装饰类的关系是运行时候确认的 装饰类和被装饰类的耦合关系是松散的,各自可以独立变化 下面看看具体的代码.

从王者荣耀看设计模式(十七.原型模式)

从王者荣耀看设计模式(原型模式) 一.简介 王者荣耀包含有很多的玩法,其中有一种游戏模式只在周六和周日开放,那就是--克隆模式.与常规的游戏双方阵营只允许出现单一英雄不同,在克隆模式中,双方各选择一个英雄进行克隆,换句话说,一个阵营的五个人操作的五个相同的英雄 二.模式动机 在软件系统中,有些对象的创建过程比较复杂,而且有时候需要频繁创建,原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的意图所在. 三.原型模式 原型模式

iOS设计模式-原型模式

| 导语 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 通过深复制(克隆.拷贝)一个指定类型的对象来创建更多同类型的对象.这个指定的对象可被称为“原型”对象,也就是通过复制原型对象来得到更多同类型的对象.即原型设计模式.iOS中使用copy协议完成这个过程. 原型模式主要用于对象的深复制,它的核心是就是类图中的原型类Prototype. 原型模式的核心思想是把复制的过程封闭到对象的内部完成.第一个好处是修改复制的过程而不影响外部的使用者. 原型模式的优点及使用场景 简化对

C#学习笔记-原型模式

题目:编写基本的简历. 实现: 创建基本的Resume类,然后主函数通过实例化Resume来写简历即可. Resume类: 1 class Resume 2 { 3 private string name; 4 private string sex; 5 private string age; 6 private string timeArea; 7 private string company; 8 9 public Resume(string name) 10 { 11 this.name

Java描述设计模式(05):原型模式

一.原型模式简介 1.基础概念 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象. 2.模式结构 原型模式要求对象实现一个可以"克隆"自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例.这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆自身的方法,就可以通过这个方法来获取新的对象,而无须再去通过new来创建. 3.代码实现 1).UML关系图 Java描述设计模

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

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