共享学习心得

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

一、单件模式的意图
保证一个类仅有一个实例,并提供一个访问它的全局访问点。

二、应用场景

l         每台计算机可以有若干个打印机,但只能有一个Printer Spooler,避免两个打印作业同时输出到打印机。
(摘自吕震宇的C#设计模式(7)-Singleton Pattern

l         PC机中可能有几个串口,但只能有一个COM1口的实例。

l         系统中只能有一个窗口管理器。

l         .NET Remoting中服务器激活对象中的Sigleton对象,确保所有的客户程序的请求都只有一个实例来处理。

三、实例

 1 1public sealed class Spooler 
 2 2{
 3 3    static Spooler instance=null;
 4 4
 5 5    private Spooler()
 6 6    {
 7 7    }

 8 8
 9 9    public static Spooler Instance
1010    {
1111        get
1212        {
1313            if (instance==null)
1414            {
1515                instance = new Spooler();
1616            }

1717            return instance;
1818        }

1919    }

2020}




1sealed class Singleton
2{
3   private Singleton();
4   public static readonly Singleton Instance=new Singleton();
5}



以上两个实例产生的效果相同.但存在多线程时的并发性,安全性, 无法实现延迟初始化等问题.可以查看一下两个网页来了解更多单件模式的知识.

http://terrylee.cnblogs.com/archive/2005/12/09/293509.html

http://www.cnblogs.com/birdshover/archive/2006/06/15/424656.aspx

posted on 2007-11-29 10:57  神秘狭  阅读(205)  评论(0)    收藏  举报