概述
Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任。


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

例子
1.ASP.NET某应用程序对应的Application必须是唯一的。
2.不管在什么时候谈到地球,它都是指同一个地球。
3.某全局计数器对象是必须是唯一的,否则会使计数失败。

UML类图
单件型模式(Singleton Pattern)

代码:对应UML类图
 1    }

 1    }

代码:六种实现方式
 1.最简单的实现,但不支持线程安全
 1    }

 2.支持线程安全,但是不支持多线程的并发操作
 1    }

 3.支持线程安全,使用双检查(Double Check),支持多线程的并发操作
 1    }

 4.使用静态初始化方式,但不支持缓实例化
 1    }

 5.使用静态初始化方式,且支持缓实例化,但引入了附加类
 1


 6.使用静态初始化方式,且支持缓实例化,实际使用时首选
 1    }


代码:完整例子
  实现简单计数功能
 1    }

 1    }

 1    }


总结
单件模式提供非常好的机制保证,实例唯一且有全局唯一访问点

 源代码:[下载]

参考
1. 【dofactory】ttp://www.dofactory.com/Patterns/Patterns.aspx#list
2. 【Terrylee】http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html
3. 【卢振宇老师】http://zhenyulu.cnblogs.com/category/6930.html


相关文章:

  • 2021-06-19
  • 2022-12-23
  • 2021-07-03
  • 2021-07-11
  • 2022-03-02
  • 2022-01-31
猜你喜欢
  • 2021-07-06
  • 2021-09-21
  • 2021-12-14
  • 2021-05-17
相关资源
相似解决方案