FreeOZ论坛

标题: 最好的Singleton实现 [打印本页]

作者: flyspirit    时间: 7-7-2008 16:50
标题: 最好的Singleton实现
Singleton模式是面向对象开发中最常用的模式了,其目的是,一个类在整个进程中只有一个实例,也就是一个对象。一般来说,用以下方法实现:(sample is C# code)

public sealed class logger
{
  private static logger instance=null;
  pirvate logger()
  {
     // initilize codes here
  }
  public static logger getInstance()
  {
    if ( null == instance )
      instance=new logger();
   
    return instance;
  }
}

由于constructor是private,外部对象只能够通过getInstance获得此类的实例,而getInstance始终返回该类的静态实例,确保只有一个类实例存在。

但在实际应用中,以上实现没有考虑多线程的问题,把多线程问题考虑进去后,代码会增加不少。

这里有个更加简单的实现 (只适用于.NET)
public sealed class Logger
{
        public static readonly Logger loginstance = new Logger();
        private Logger(){ …… };
}

这个实现基于:.NET Framework确保静态成员的初始化一定是thread safe的。

这应该是最简单的singleton代码了,可以应用于实际,也可以在面试时使用,如果面试时能够有机会用到,应该会获得加分。
作者: c3po    时间: 10-7-2008 11:07
不错,俺正拿这个面试别人呢。
可等到了澳洲就要被别人面试了。




欢迎光临 FreeOZ论坛 (https://www.freeoz.org/ibbs/) Powered by Discuz! X3.2