最近在做一个聊天室,在设计类的时候遇到一个问题:不知道如何保证每一个用户对象(不同的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号