最近在做一个聊天室,在设计类的时候遇到一个问题:不知道如何保证每一个用户对象(不同的USER类实例)进入同一个聊天室对象(唯一的Room类实例),也就是说,所有用户登陆后只进入一个聊天室,这个聊天室对象是全局唯一的。研究了一下才知道这原来就是设计模式中的singleton模式。
以下是Room类的关键代码:

 1public class Room
 2{
 3    private static Room room;//声明一个静态的Room类变量
 4     private Room()//构造函数私有,防止实例化
 5    {
 6        //
 7        //TODO: 在此处添加构造函数逻辑
 8        //
 9    }

10     public static Room GetRoom()//获取实例的方法,供外部调用
11     {
12         if (room == null)//若实例不存在,创建实例,否则返回已有的实例;
13         {
14             room = new Room();
15         }

16         return room;
17     }

18}

客户端调用代码:
class Test
{
    
static void Main()
    
{
       Room room1 
= Room.GetRoom();//创建两个Room类对象
       Room room2 = Room.GetRoom();
       
if (room1 == room2)
       
{
           Console.WriteLine(
"room1对象和room2对象相同");
       }

       Console.ReadLine();
    }

   

}
这样就实现了Room类对象的唯一性
posted on 2008-06-20 12:49  武汉往事  阅读(207)  评论(0编辑  收藏  举报