首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

2.2 《硬啃设计模式》 第4章 怎么管理全局信息? 单件模式(Singleton Pattern)

2013-10-25 
2.2 《硬啃设计模式》 第4章 如何管理全局信息?- 单件模式(Singleton Pattern)单件模式可能是23种模式中最简

2.2 《硬啃设计模式》 第4章 如何管理全局信息?- 单件模式(Singleton Pattern)

单件模式可能是23种模式中最简单也被说得最多的模式了。

什么情况下可考虑用单件模式呢?
需要一致地管理全局信息时,可考虑用单件模式。

例:
某论坛需要对所有访问者显示当前在线人数、最高在线人数、今天谁生日等全局信息。
论坛很火热,我们不希望每次都要去读

说明:
1.在统一的地方管理全局的信息。
2.这些全局信息供程序其它地方读取,一般情况下是读数据,而不写数据,如果要写数据还需要处理写冲突。

上例中光用单件模式还不能完全解决问题,Singleton类中应该还需要写缓存的代码,将最高在线人数、今日谁生日缓存起来,使程序不必每次去读取数据库。

单件通过在内存中唯一的Singleton保证了数据的唯一,并克服了数据冲突,但如果应用在网络负载均衡环境就会出问题。
在网络负载均衡环境中,有多台服务器跑相同的程序,每台服务器上有一个Singleton,这样就会出问题,在软件设计时需要考虑这样的情况。
在网络负载均衡环境下,程序要避免使用静态变量,对于需要共享的数据可通过统一的状态服务来处理,也就是说专门用一个服务来管理这些全局数据,所有程序从这个服务中取数据,而不要再通过Singleton的静态方法。

 

 

请看下一文……   

作者:张传波

创新工场创业课堂(敏捷课程)讲师

软件研发管理资深顾问

CMMI首席专家

《火球——UML大战需求分析》作者

《硬啃设计模式》作者

www.umlonline.org创办人

 

热点排行