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

  • 相关阅读:
    并发编程——IO模型(重点)
    03-使用 HashMap 还是 TreeMap?
    02-Spring框架中Bean的生命周期
    01-Spring,SpringMVC,SpringBoot,SpringCloud的区别和联系
    MongoDB教程17-MongoDB聚合
    MongoDB教程16-MongoDB索引
    MongoDB教程15-MongoDB $type 操作符
    MongoDB教程14-MongoDB查询文档
    MongoDB教程13-MongoDB删除文档
    MongoDB教程12-MongoDB更新文档
  • 原文地址:https://www.cnblogs.com/SkyMouse/p/2340730.html
Copyright © 2011-2022 走看看