博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式学习-Prototype(原型)
阅读量:4598 次
发布时间:2019-06-09

本文共 883 字,大约阅读时间需要 2 分钟。

意图:用原型示例指定创建对象的种类,通过拷贝这些原型创建新的对象

适用性:

当实例化的类是在运行时指定时

为了避免创建一个与产品类平行的工厂类

当一个类的示例只能有几个不同状态组合中的一种时

示例代码:

#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();
    }

转载于:https://www.cnblogs.com/SkyMouse/archive/2011/05/14/2340730.html

你可能感兴趣的文章
竞价广告系统-广告检索
查看>>
强哥PHP面向对象学习笔记
查看>>
[转]基于.NET平台常用的框架整理
查看>>
Symbian (Read Inbox)读取收件箱的内容
查看>>
良好的编程规范
查看>>
struts2 入门
查看>>
.net 编译原理
查看>>
mean 快速开发和现有技术的对比分析
查看>>
Metro Style app :浏览器扩展
查看>>
linux的kernel是怎样工作的(TI_DM36X_ARM系统)(1)
查看>>
[luogu4310] 绝世好题 (递推)
查看>>
[luogu3203 HNOI2010] 弹飞绵羊 (分块)
查看>>
-Dmaven.multiModuleProjectDirectory system propery is not set.
查看>>
Python2 unichr() 函数
查看>>
Python 字典 copy()方法
查看>>
Minimum Path Sum
查看>>
Remove Duplicates from Sorted Array II
查看>>
常量指针和指针常量巧妙记忆方法[转]
查看>>
python-haproxy作业讲解视频总结
查看>>
批处理文件脚本总结
查看>>