• 开发设计模式(六)多例模式(Multition Pattern)


    多例模式实际上就是单例模式的扩充,多例模式又划分为有上限多例模式无上限多例模式两种,有上限多例模式中的多例类的实例是有上限的,当这个多例类中的上限数值上等于 1 时,此时,多例类退化回到了单例类;而对于无上限多例模式中的多例类,它的上限是没有限制的,也就是说它的上限数值是不确定的,
    这个多例类并不一定能够退化成单例类;

    多例模式特点:
         1. 多例类可以有多个实例
         2. 多例类必须自己创建自己的实例,并管理自己的实例,和向外界提供自己的实例。

     

           先举一个例子,大家还记得那首诗《石灰吟》吗?作者是谁?于谦,他是被谁杀死的?明英宗朱祁镇,对,就是那个在土木堡之变中被瓦刺俘虏的皇帝,被俘虏后,他弟弟朱祁钰当上了皇帝,就是明景帝,估计当上皇帝后乐疯了,忘记把老哥朱祁镇削为太上皇了,我Shit,在中国的历史上就这个时期是有2 个皇帝,你说这期间的大臣多郁闷,两个皇帝耶,两个精神依附对象呀。

    先看类图:

    using UnityEngine;
    using System.Collections;
    
    class Emperor
    {
     // 多例的个数 //
     private static int maxNumOfEmperor1 = 2;
     private static ArrayList emperorInfoList = new ArrayList(maxNumOfEmperor1);
     private static ArrayList emperorList = new ArrayList(maxNumOfEmperor1);
     // 当前皇帝的序号 //
     private static int countNumOfEmperor = 0;
     
     // 先把2个皇帝产生出来 //
      static Emperor()
     {
      Debug.Log("............");
      for(int i = 0; i < maxNumOfEmperor1; i ++)
      {
       emperorList.Add(new Emperor("皇帝" + (i+1)));
      }
     }
     public Emperor(string info)
     {
      emperorInfoList.Add(info);
     }
     
     public static Emperor getInstance()
     {
        Debug.Log("GetInstance");
          countNumOfEmperor = Random.Range(0, maxNumOfEmperor1);
          return (Emperor)emperorList[countNumOfEmperor];
     }
     
     // 皇帝的信息 //
     public static void EmperorInfo()
     {
      Debug.Log("........." + emperorInfoList[countNumOfEmperor]);
     }
    }
    
    
    public class MultitionPattern : MonoBehaviour {
    
        // Use this for initialization
        void Start()
        {
            int ministerNum = 10;
            for (int i = 0; i < ministerNum; i++)
            {
                Emperor emperor = Emperor.getInstance();
                Debug.Log("" + (i + 1) + "个大臣参拜的是:");
                Emperor.EmperorInfo();
            }
        }
    }
  • 相关阅读:
    MongoDB 常用故障排查工具
    MongoDB ServerStatus返回信息
    SQL Server 2012实施与管理实战指南(笔记)——Ch6连接的建立和问题排查
    SQL Server 2012实施与管理实战指南(笔记)——Ch5启动SQL Server服务和数据库
    [20140504] ADO.NET客户端超时
    SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件
    SQL Server 2012实施与管理实战指南(笔记)——Ch3Alwayson可用组
    SQL Server 2014新特性——Buffer Pool扩展
    SQL Server 2014新特性——事务持久性控制
    SQL Server 2014新特性——基数评估(白皮书阅读笔记)
  • 原文地址:https://www.cnblogs.com/martianzone/p/3364965.html
Copyright © 2020-2023  润新知