zoukankan      html  css  js  c++  java
  • 大话设计模式--原型模式 Prototype -- C++实现

    1. 原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。。。

    注意: 拷贝的时候是浅拷贝 还是 深拷贝, 来考虑是否需要重写拷贝构造函数。

    关键在于: virtual Prototype* clone();  克隆函数。。。返回一个克隆的对象。

    实例: 以深拷贝为例

    prototype.h   prototype.cpp

    #ifndef PROTOTYPE_H
    #define PROTOTYPE_H
    
    class Prototype
    {
    public:
        int a;
        char *str;
        Prototype(int b, char* cstr);
        Prototype(const Prototype &cp);
        ~Prototype();
        void show();
        virtual Prototype* clone();
    };
    
    #endif // PROTOTYPE_H
    
    #include "prototype.h"
    #include <string.h>
    #include <stdio.h>
    
    Prototype::Prototype(int b, char* cstr)
    {
        a = b;
        str = new char[b];
        strcpy(str, cstr);
    }
    
    Prototype::~Prototype()
    {
        delete str;
    }
    
    Prototype::Prototype(const Prototype &cp)
    {
        a = cp.a;
        str = new char[a];
        if(str!=0)
            strcpy(str, cp.str);
    }
    
    Prototype* Prototype::clone()
    {
        return new Prototype(a, str);
    }
    
    void Prototype::show()
    {
        printf("a: %d, str: %s
    ", a, str);
    }


    main.cpp

    #include <iostream>
    #include "prototype.h"
    #include <string.h>
    #include <stdio.h>
    
    using namespace std;
    
    int main()
    {
        cout << "Prototype test !" << endl;
    
        Prototype *p = new Prototype(6, "hello");
        Prototype *p1 = p->clone();
        p1->show();
    
        return 0;
    }
    



     

  • 相关阅读:
    iOS热更新-8种实现方式
    HTTPS分析-简单易懂
    猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS
    iOS的ATS配置
    Objective-C中block的底层原理
    iOS系列文章
    UIViewController生命周期-完整版
    缩放因子和UI设计
    iOS APP 如何做才安全
    逆向工程
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3648195.html
Copyright © 2011-2022 走看看