设计模式学习-Prototype(原型)
意图:用原型示例指定创建对象的种类,通过拷贝这些原型创建新的对象
适用性:
当实例化的类是在运行时指定时
为了避免创建一个与产品类平行的工厂类
当一个类的示例只能有几个不同状态组合中的一种时
示例代码:
#pragma once
//孙悟空一变二二变四…
class CMonkeyKing
{
public:
    CMonkeyKing(int 
i);
public:
    ~CMonkeyKing(void);
    public:
    void 
Display()
    {
        if(m_i==0)
        {
            
_tprintf(_T("Stone monkey/n"));
        }    
        if(m_i 
==1)
        {
        _tprintf(_T("qitiandasheng/n"));
        
}
        else
        {
            _tprintf(_T("other 
status/n"));
        }
    }
    public:
    CMonkeyKing* 
Clone()
    {
        return new CMonkeyKing(*this);
    }
    
private:
    int m_i;
};
CMonkeyKing** kings = new CMonkeyKing*[100];
    CMonkeyKing 
stonKing(0);
    CMonkeyKing qitianKing(1);
    CMonkeyKing 
otherKin(-1);
    for(int i=0;i<100;i++)
    {
        
if(i%3==0)
        {
            kings[i] = stonKing.Clone();
        
}
        else if(i%3==1)
        {
            kings[i] = 
qitianKing.Clone();
        }
        else
        {
            
kings[i] = otherKin.Clone();
        }
    }
    //CMonkeyKing* pTemp = 
*kings;
    for(int j=0;j<100;j++)
    {
        
kings[j]->Display();
    }
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号