zoukankan      html  css  js  c++  java
  • 原型模式

    Prototype模式——简单理解就是新对象的创建可以通过已有对象进行创建。

    Prototype模式提供了一个通过已存在对象进行新对象创建的接口CloneClone实现和具体的实现语言相关,在C++中通过拷贝构造函数实现。

    原型模式通过复制原型而获得新对象的创建功能,能够生产对象,让我们想起了工厂模式。实际上原型模式、建造者模式、工厂模式都是通过一个类(对象实例)来专门负责对象的创建工作(工厂对象),它们之间的区别是:建造者模式重在复杂对象的一步步创建(并不直接返回对象),工厂模式重在产生多个互相依赖的对象,而原型模式重在从自身复制自己创建新类。

    代码示例(C++)
    Ptototype模式的实质就是创建一个单独的接口Clone,由这个接口实现复制已存在的对象。不通过接口的话也可以实现复制对象,这就要我们重写拷贝构造函数。例如:

    std::string s="124";
    std::string s1(s);
    

    在原型模式中,将拷贝构造函数封装成一个接口,实现复制对象的功能。代码示例如下:

    #include<iostream>
    using namespace std;
    
    class Prototype
    {
    public:
    	virtual ~Prototype(){}
    	virtual Prototype* Clone() const = 0;   //原型模式,最核心的抽象,凡是原型模式必须实现该抽象
    protected:
    	Prototype(){}
    };
    
    class ConcretePrototype:public Prototype
    {
    public:
    	ConcretePrototype(){}
    	ConcretePrototype(const ConcretePrototype& obj)
    	{
    		cout << "拷贝构造,注意深拷贝,浅拷贝的问题
    ";
    	}
    	~ConcretePrototype(){}
    	Prototype* Clone()const
    	{
    		return new ConcretePrototype(*this);
    	}
    private:
    };
    
    int main() {
    	Prototype* p = new ConcretePrototype();
    	Prototype* p1 = p->Clone();
    
        return 0;
    }
    

    关注微信公众号,定期推送设计模式、后端开发、分布式等更多内容!

  • 相关阅读:
    软件测试基础
    Python
    Python
    C# 打开帮助文档,打开电脑中其他应用或者文件
    C# 设置窗口大小为不可调、取消最大化、最小化窗口按键
    C# 控件置于最顶层、最底层、隐藏、显示
    C# 在窗口绘制图形(打点、画圆、画线)
    C# 不同窗口传递参数
    C# 禁止在textBox输入框输入非法字符
    C# 设定弹出窗体位置
  • 原文地址:https://www.cnblogs.com/s-lisheng/p/11299145.html
Copyright © 2011-2022 走看看