原型模式的C++实现

原型模式的C++实现

原型模式: 根据已有原型构造新对象
实现思路: 利用拷贝构造函数克隆自身

#include <iostream>

using namespace std;

class Prototype {
public:
    Prototype() = default;

    Prototype(const Prototype&);

    Prototype* clone();

    ~Prototype();

    void show();

private:
    int m_data1;
    
    int m_data2;
};


int main() {
    Prototype p1;
    auto np = p1.clone();
    p1.show();
    np->show();
    delete np;
}

Prototype::Prototype(const Prototype& p) 
    :m_data1{p.m_data1},
     m_data2{p.m_data2}
{

    std::cout << "拷贝成功\n";
}

Prototype* Prototype::clone() {
    return new Prototype(*this);
}

Prototype::~Prototype() {
    std::cout << "prototype is died \n";
}

void Prototype::show() {
    std::cout << "m_data1: " << m_data1
              << "m_data2: " << m_data2
              << std::endl;
}
posted @ 2024-11-02 00:39  RunTimeErrors  阅读(3)  评论(0编辑  收藏  举报