• 设计模式 之 《原型模式》


    GOOD:从一个对象再创建另外一个可定制的对象,而无需知道任何创建的细节。并能提高创建的性能。 

    说白了就COPY技术,把一个对象完整的COPY出一份。

    #ifndef __PROTOTYPE_MODEL__
    #define __PROTOTYPE_MODEL__
    
    #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;
        }
    };
    
    #endif //__PROTOTYPE_MODEL__
    
    /* 《客户端》
    #include "PrototypeModel.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        ConcretePrototype1* test = new ConcretePrototype1("小王");
        ConcretePrototype2* test2 = (ConcretePrototype2*)test->clone();
        test->show();
        test2->show();
    
        return 0;
    }
    */
  • 相关阅读:
    解决ORA01502 state unusable错误成因
    Remoting.Corba
    NHibernate 处理 oracle 的long数据类型
    NET下连接SYBASE数据库
    JavaScript 的变量作用域及闭包
    PowerDesigner的样式设置
    NHibernate学习 (转)
    性能调优:数据库设计规范化的五个要求
    利用 ADO.NET 连接到 Informix(转)
    sqlnet.expire_time
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3398327.html
Copyright © 2020-2023  润新知