浅析软件项目开发中的单件模式
http://tech.ddvip.com 2008年01月22日 社区交流
内容摘要:单件(Singleton)模式是设计模式的一个典型且相对简单的构造型模式。本文举实例说明单件模式的主要注意事项和多线程环境下的单件模式。
内部方式则是可以为其增加一个System.Threading.Timer或者通过配置文件的Watcher的回调代理完成,下面是一个增加了Timer的内部自发更新示例:
using System;
namespace VisionLogic.DesignPattern.Practice
...{
public class Singleton
...{
private static Singleton instance;
private System.Threading.Timer timer;
private const int Interval = 2000;
private Singleton() ...{ }
public static Singleton Instance
...{
get
...{
if (instance == null)
...{
instance = new Singleton();
instance.timeStamp = System.DateTime.Now;
instance.timer = new System.Threading.Timer(
instance.RefershTimeStamp,
null,
0,
Interval);
}
return instance;
}
}
/**//// <summary>
/// 共享的实例数据
/// </summary>
private DateTime timeStamp;
public DateTime TimeStamp
...{
get ...{ return timeStamp; }
}
/**//// <summary>
/// timer 的回调方法
/// </summary>
/// <param name="state"></param>
private void RefershTimeStamp(object state)
...{
timeStamp = System.DateTime.Now;
}
}
}
示例7
对于较为大型的应用,一般部署上会考虑采用NLB集群,这样如果Singleton其中需要保存一些公共的内存对象(例如:计数器),但是由于在每个服务器节点上各自都有Singleton,所以总体来看Singleton并不“单件”,那么应用对于单一实例的依赖会因为物理节点的非“单件”破坏,从本质上讲采用Singleton模式本身会对于应用的水平扩展(Scale Out)形成障碍。
来源:IT168 作者:王翔 责编:豆豆技术应用