zoukankan      html  css  js  c++  java
  • Prototype 模式

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

    ////////////////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();
        ConcretePrototype(const ConcretePrototype& cp);
        Prototype* Clone() const;
    protected:
    private:
    };
    
    
    #endif
     1 ////////////////Prototype.cpp///////
     2 #include "Prototype.h"
     3 #include <iostream>
     4 using namespace std;
     5 
     6 
     7 Prototype::~Prototype()
     8 {
     9 
    10 }
    11 Prototype::Prototype()
    12 {
    13 
    14 }
    15 Prototype* Prototype::Clone() const
    16 {
    17     return 0;
    18 }
    19 ConcretePrototype::~ConcretePrototype()
    20 {
    21 
    22 }
    23 ConcretePrototype::ConcretePrototype()
    24 {
    25     cout<<"创建一个对象"<<endl;
    26 }
    27 ConcretePrototype::ConcretePrototype(const ConcretePrototype& cp)
    28 {
    29     cout<<"复制原型"<<endl; 
    30 }
    31 Prototype* ConcretePrototype::Clone() const
    32 {
    33     return new ConcretePrototype(*this);
    34 }
     1 ////////////////main.cpp///////
     2 #include "Prototype.h"
     3 #include <iostream>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     Prototype* p = new ConcretePrototype();
     9     Prototype* p1 = p->Clone();
    10     Prototype* p2 = p1->Clone();
    11 
    12     system("pause");
    13     return 0 ;
    14 }
  • 相关阅读:
    java通过dom读写xml文件
    SWT
    Eclipse RCP学习资料
    Integration Guide
    一个Linux命令,黑客帝国
    GET和POST两种基本请求方法的区别
    贫血模式-AnemicDomainModel
    Synchronized锁在Spring事务管理下,为啥还线程不安全?
    redis 集群配置、启动
    redis cluster集群
  • 原文地址:https://www.cnblogs.com/csxcode/p/3696735.html
Copyright © 2011-2022 走看看