软件开发设计模式(二)—多例模式

多例模式的定义:作为对象的创建模式,多例模式中的多例类可以有多个实例,而且多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。

多例模式的特点:

所谓的多例模式(Multiton Pattern),实际上就是单例模式的自然推广。作为对象的创建模式,多例模式或多例类有如下的特点:

(1)多例类可有多个实例

(2)多例类必须自己创建、管理自己的实例,并向外界提供自己的实例,因此,他的构造函数也是private的,这点跟单例模式是相同的。

(3)根据是否有实例上限分为:有上限多例类和无上限多例类。

举个例子,假设一个人有N个老婆(这里假设有两个老婆),那么对象是有限的(这里为2个),简单粗暴直接上代码吧,

有上限多例模式具体实现:


 class Wives
    {

       //创建两个实例
        private static Wives wife01 = new Wives();
        private static Wives wife02 = new Wives();


        //私有构造函数
        private Wives() { }

        //公开静态创建对象方法
        public static Wives GetInstance(int whichOne)
        {
            if (whichOne == 0)
                return wife01;
            return wife02;
        }


        
    }
测试代码

 class Program
    {
        private static Wives wife1, wife2;
        static void Main(string[] args)
        {
            GetWife();
        }

        private static void GetWife()
        {
            wife1 = Wives.GetInstance(0);
            wife2 = Wives.GetInstance(1);
            Wives[] wives = new Wives[2] { wife1, wife2 };
            Random random = new Random();
            for (int i = 1; i <= 31; i++)
            {
                int index = random.Next(0, 2);
                Console.WriteLine("第"+i+"天侍奉的是:"+wives[index].GetHashCode().ToString());
            }
        }
    }

输出结果见图片


无上限多例模式(事先并不知道实例的具体个数,因为实例个数无法预知,因为通常的做法是用集合来存储实例。)不太懂这个无上限多例模式,感觉直接new会
方便很多,这个博主有写关于无上限多例模式的实现(http://blog.csdn.net/zl3450341/article/details/6878932)



版权声明:本文为uokeyo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。