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

来源:互联网 发布:2016最大网络传销案 编辑:程序博客网 时间:2024/05/20 06:52

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

多例模式的特点:

所谓的多例模式(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)

 
原创粉丝点击