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

  • 相关阅读:
    数据结构之队列
    设计模式之策略模式的使用
    搭建一个高可用的redis环境
    Linux遗忘命令
    重温几种排序算法之希尔排序、归并排序、快速排序
    HashMap的简单实现
    Java GC基础
    2016年年终总结
    Shell 备忘录
    Openstack Grizzily 单节点测试机安装( All In One CentOS/RHEL)
  • 原文地址:https://www.cnblogs.com/SkyMouse/p/2340730.html
Copyright © 2011-2022 走看看