大话设计模式--原型模式 Prototype -- C++实现

来源:互联网 发布:现货交易app软件排名 编辑:程序博客网 时间:2024/06/03 15:57

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

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

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

 

实例: 以深拷贝为例

prototype.h   prototype.cpp

#ifndef PROTOTYPE_H#define PROTOTYPE_Hclass 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\n", 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;}



 

 

原创粉丝点击