zoukankan      html  css  js  c++  java
  • 设计模式学习Prototype(原型)

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

    适用性:

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

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

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

    示例图:

    image

    示例代码:

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

  • 相关阅读:
    matplotlib直方图学习小记
    matplotlib饼状图学习小记
    P2306 被yyh虐的mzc
    P1776 宝物筛选_NOI导刊2010提高(02)&& 多重背包二进制优化
    51NOD 1445 变色DNA
    51NOD 1459 迷宫游戏
    CODEVS 1001 舒适的路线
    P4514 上帝造题的七分钟
    1082 线段树练习 3 && 树状数组区间修改区间查询
    P4145 上帝造题的七分钟2 / 花神游历各国
  • 原文地址:https://www.cnblogs.com/SkyMouse/p/2340730.html
Copyright © 2011-2022 走看看