zoukankan      html  css  js  c++  java
  • [创建型模式] Prototype

    Prototype.h

    //
    //  Prototype.h
    //  Prototype
    //
    //  Created by Cheney Shen on 11-2-20.
    //  Copyright 2011年 __MyCompanyName__. All rights reserved.
    //
    
    #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_H_
    

    Prototype.cpp

    //
    //  Prototype.cpp
    //  Prototype
    //
    //  Created by Cheney Shen on 11-2-20.
    //  Copyright 2011年 __MyCompanyName__. All rights reserved.
    //
    
    #include "Prototype.h"
    #include <iostream>
    using namespace std;
    
    Prototype::Prototype()
    {
        
    }
    
    Prototype::~Prototype()
    {
        
    }
    
    Prototype* Prototype::Clone() const
    {
        return 0;
    }
    
    ConcretePrototype::ConcretePrototype()
    {
        
    }
    
    ConcretePrototype::~ConcretePrototype()
    {
        
    }
    
    ConcretePrototype::ConcretePrototype(const ConcretePrototype& cp)
    {
        cout<<"ConcretePrototype copy..."<<endl;
    }
    
    Prototype* ConcretePrototype::Clone() const
    {
        return new ConcretePrototype(*this);
    }
    

    main.cpp

    //
    //  main.cpp
    //  Prototype
    //
    //  Created by Cheney Shen on 11-2-20.
    //  Copyright 2011年 __MyCompanyName__. All rights reserved.
    //
    #include "Prototype.h"
    #include <iostream>
    using namespace std;
    
    int main (int argc, const char * argv[]) {
    
        Prototype* p = new ConcretePrototype();
        Prototype* p1 = p->Clone();
        delete p1;
        p1 = NULL;
        return 0;
    }
    

  • 相关阅读:
    jQuery$命名冲突问题解决方法
    微信小程序开发工具 ubuntu linux版本
    阿里云Https通配符证书购买
    vs2017安装
    规范与标准
    Jvm远程监控
    Bash笔记
    Html5前端笔记
    Php7 开发笔记
    webpack笔记
  • 原文地址:https://www.cnblogs.com/shenfei2031/p/1979307.html
Copyright © 2011-2022 走看看