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



                
            
        
浙公网安备 33010602011771号