Singleton模式

Singleton模式,或者称之为单件模式,应该算是设计模式中使用最广泛也是最简单的一个了。Singleton模式的目的主要是限制类的创建,或者说限制实例的个数只能为一个吧。
Singleton模式的思想很简单,实现也很简单,将构造函数设置为私有,而是通过静态函数调用构造函数来得到类的实例,同时在静态函数中检查实例个数保证只有一个实例,否则抛出异常或是进行相关处理,太简单了,不是吗?
看Singleton模式的时候,突然想到以前曾经遇到过的一个问题,如何让注册用户只能登录一次,不能重复登录,想想,这不是和Singleton模式的思想是完全一样的吗?确实,那么这个问题自然也应该可以借用Singleton模式的方法来解决了;但仔细一思考,还是有些不同的,Singleton模式是针对类而言的,而注册用户的实例是针对用户而言的,如果生搬Singleton模式,那么就要为每个用户建一个用户类了,my god,要人命亚!不急,做点修改就是了。在回想一下Singleton模式构造实例的情形,构造实例之前,先要检查实例个数然后在调用构造函数,看来文章还得在检查实例个数这里来做,对类采用Singlton模式时,检查的是类的实例个数,那么对用户呢,自然就是用户的实例个数了,那关键点就在于如何判断用户实例个数了?既然不能为每个用户建一个类,但我们在创建用户实例时将用户信息保存下来总可以吧,如何保存了,方法多着了,将用户信息保存到hashtable中,没问题,自然可以了,hanshtable的key嘛,自然就是用户名了,然后检查用户实例的时候,如果用户没有登录,自然hanshtable中key为用户名的值自然是null了;而已经登录的用户自然就不是null了,这样检查完毕了,根据检查结果采取相应操作就可以了。
确实,Singleton模式太简单了,也十分的有用。再回过头想想,为什么Singleton模式这么简单?原因就在于它的目的是限制类的创建,所有这个模式与接口、继承、抽象类等等都没有关系,而面向对象思想中,最难应用的就是类、接口、继承、实现等的处理了。
posted @ 2005-06-01 14:33  Articles about .NET  阅读(1436)  评论(4编辑  收藏  举报