ڼС
梦回起点
做你害怕做的事,你会发现:不过如此
本站基于WordPress—主题by 设计窝
冀ICP备15003737号
梦回起点
Copyright © 2015-2024 All rights reserved.

原型模式——大话设计模式读书笔记

再来一个原型模式。

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

Main

下面是原型模式的C++代码:

/*
* initm.com
* 作者:Stupid
* 时间:2017-10-22 23:11
* 描述: 代码使用QT5.9+MinGW53_32编译通过,代码为原型模式的基本结构代码。
*/
#include <QCoreApplication>
#include <iostream>

template <typename T>
class Prototype
{
private:
    T data;
public:
    Prototype(T data):data(data){}
    void print(){
        std::cout << data << std::endl;
    }
    virtual Prototype* Clone() = 0;
};

template <typename T>
class ConcretePrototype1: public Prototype<T>
{
public:
    ConcretePrototype1(T data): Prototype<T>(data){}
    Prototype<T>* Clone()override final{
        return new ConcretePrototype1(*this);
    }
};

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    int data = 10;
    Prototype<decltype(data)>* prototype = new ConcretePrototype1<decltype(data)>(data);
    Prototype<decltype(data)>* prototype2 = prototype->Clone();
    prototype2->print();
    return a.exec();
}

代码中我故意使用基类来Clone,只是想说明Clone的类可以是未知的,可以是动态的变化的。和拷贝构造函数还是有区别的。这是一种概念性的东西,不去考虑实现;而拷贝构造函数是是一种实现方法。

2017-10-22
                         
  1. 微型水泵

    有源码,学习了。

发表回复