• 第九章-原型模式


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

    图片

    原型模式其实就是从一个对象创建另外一个可定制的对象,而且不需要知道任何创建的细节。

    原型模式基本代码

    #include<iostream>
    #include<string>
    
    using namespace std;
    
    //抽象基类
    class Prototype
    {
    private:
    	string m_strName;
    public:
    	Prototype(string strName) { m_strName = strName; }
    	Prototype() { m_strName = " "; }
    	void Show()
    	{
    		cout << m_strName << endl;
    	}
    	virtual Prototype* Clone() = 0;
    };
    
    // class ConcretePrototype1 
    class ConcretePrototype1 : public Prototype
    {
    public:
    	ConcretePrototype1(string strName) : Prototype(strName) {}
    	ConcretePrototype1() {}
    
    	virtual Prototype* Clone()
    	{
    		ConcretePrototype1 *p = new ConcretePrototype1();
    		*p = *this; 						//复制对象 
    		return p;
    	}
    };
    
    // class ConcretePrototype2 
    class ConcretePrototype2 : public Prototype
    {
    public:
    	ConcretePrototype2(string strName) : Prototype(strName) {}
    	ConcretePrototype2() {}
    
    	virtual Prototype* Clone()
    	{
    		ConcretePrototype2 *p = new ConcretePrototype2();
    		*p = *this; //复制对象 
    		return p;
    	}
    };
    
    
    
    //客户端
    int main()
    {
    	ConcretePrototype1* test = new ConcretePrototype1("小王");
    	ConcretePrototype1* test2 = (ConcretePrototype1*)test->Clone();
    	test->Show();
    	test2->Show();
    
    	system("pause");
    	return 0;
    }
    
    
    

    浅拷贝和深拷贝 详细见《大话数据结构》第9章

  • 相关阅读:
    ER/数据库建模工具之MySQL Workbench的使用
    HBase基础架构及原理
    HBase在HDFS上的目录介绍
    zookeeper的三种安装模式
    YCSB之HBase性能测试
    kerberos简单介绍
    springboot 文件上传大小配置
    List集合三种遍历方法
    Linux中给普通用户添加sudo权限
    Linux查看所有用户和组信息
  • 原文地址:https://www.cnblogs.com/wfcg165/p/11996042.html
Copyright © 2020-2023  润新知