浅析软件项目开发中的单件模式

http://tech.ddvip.com   2008年01月22日    社区交流

内容摘要:单件(Singleton)模式是设计模式的一个典型且相对简单的构造型模式。本文举实例说明单件模式的主要注意事项和多线程环境下的单件模式。

  单件模式的主要注意事项

  上面的例子虽然简单,但实际使用中还需要考虑不要因为面向对象特性和新的开发平台特性,所导致的单件类型性质的变异。

  不要实现ICloneable接口或者继承自其相关的子类,否则客户程序可以跳过已经隐蔽起来的类构造函数,导致私有的Singleton() { } 部分的实效。

using System;
namespace VisionLogic.DesignPattern.Practice
...{
public class BaseEntity : ICloneable
...{
public object Clone()
...{
return this.MemberwiseClone();
}
}
public class Singleton : BaseEntity
...{
private static Singleton instance;
private Singleton() ...{ }
public static Singleton Instance
...{
get
...{
if (instance == null)
...{
instance = new Singleton();
instance.data = 0;
}
return instance;
}
}
…. 
}
} 

  示例3

using System;
using System.Diagnostics;
using VisionLogic.DesignPattern.Practice;
namespace VisionLogic.DesignPattern.Practice.Client
...{
class Program
...{
static void Main(string[] args)
...{
Singleton instance1 = Singleton.Instance;
Singleton instance2 = (Singleton)instance1.Clone();
instance1.Data = 30;
Trace.WriteLine(instance2.Data);
instance2.Data = 15;
Trace.WriteLine(instance1.Data);
}
}
}
结果:
0
30

  示例4

来源:IT168    作者:王翔    责编:豆豆技术应用

正在加载评论...