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

  • 相关阅读:
    使用WLC+Portal完成认证
    WLAN PSK认证
    Bug搬运工-flexconnect AP losing Vlan mapping and fall back to default vlan
    Catalyst 9400配置StackWise Virtual
    如何在Wave2 AP上更改时区
    VMware Workstation导入ova镜像文件时报错?
    Password Recovery on Cisco Catalyst 3850
    Mobility Express初始化和升级
    C9300升级-TFTP
    查看WLC的SFP模块信息
  • 原文地址:https://www.cnblogs.com/SkyMouse/p/2340730.html
Copyright © 2011-2022 走看看