网站首页

家园论坛

老版论坛

家园博客

业界新闻

技术文档

下载中心

速查中心

图片中心

硬件资讯
上一篇:无废话C#设计模式之一:开篇 下一篇:无废话C#设计模式之三:Abstract Factory
无废话C#设计模式之二:Singleton

来源: 作者: 添加日期:2007-12-2 10:24:01 点击次数:

 

代码执行结果如下图:

代码说明

 

l         LoadBalanceServer类实现了Singleton模式,也就是说无论在什么情况下,只会有一个LoadBalanceServer类的实例出现。

l         LobbyServer类表示大厅服务,用户进入大厅后和大厅服务进行服务,在这里我们仅仅在大厅服务里面保存了用户列表。

l         Singleton模式有很多实现方式,在这里使用的是双重锁定方式。对于C#来说,可能使用静态初始化方式是最简洁的,这里就不演示了。

l         LoadBalanceServer类的GetLobbyServer()方法负责返回一个压力最小的LobbyServer对象。

l         实例化LoadBalanceServer的时候Sleep了线程,目的是模拟高并发的情况,在正式代码中没有必要这样做。

 

何时采用

 

l         从代码角度来说,当你希望类只有一个实例的时候。

l         从应用角度来说,你希望有一个总管来负责某一件事情。并且这件事情的分配只能有一个人进行,如果有多个人进行肯定会弄乱。比如创建处理流水号如果有两个地方在创建的话是不是就会重复了呢?

 

实现要点

 

l         一个Singleton类,它能确保自身的实例是唯一的。

 

注意事项

 

l         不要滥用Singleton模式,只有非一个实例不可的情况下才考虑引入Singleton。否则,程序的可扩展性可能会受到限制。

本新闻共2页,当前在第2页  1  2  

 
设为首页 | 加入收藏 | 业务办理 | 友情链接 | 论坛版面 | 浙ICP备07502118号 |