Singleton(单件)- 对象创建型模式
来源:互联网 发布:人人分销系统源码 编辑:程序博客网 时间:2024/06/04 00:21
Singleton模式
一、简介:
定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。[GOF]
优点:1.一个类仅有一个实例,并且客户可以从一个众所周知的访问点访问它。
2.该类可以通过子类化扩展,并且不需要改变用户已有代码。
3.惰性初始化,只有在客户实际使用时才创建该类的唯一实例。
4.是对全局变量的一种改进,避免全局变量污染命名空间。
5.不会造成潜在的初始化和析构问题。(不同编译单元的全局变量和静态变量初始化顺序不定)
二、实现方式
GOF方式:
缺点:1.调用多次会返回多个指针,为防止单个用户调用delete删除对象,需要添加引用计数。
2.没有定义删除的时间,析构函数不会被调用,需要使用智能指针或 atexit 函数。
3.静态函数不支持虚继承。
4.多线程中可能导致多次创建问题(if 之后)。
使用智能指针改进:
Scott Meyers方式:
缺点:静态函数不支持虚继承。
三、子类
由于静态函数不支持虚继承,我们不能在子类中重新定义Intance的实现,导致每增加一个子类,我们都要修改基类的Instance函数的实现,并且需要一个参数用于决定实例化哪个子类。
Singleton的继承类还是Singleton模式的吗?如果是的话,构造函数应该是保护的,怎么能够被基类的Instance创建呢?如果不是Singleton模式,继承就没用了吧!
四、参考
http://www.codeproject.com/KB/architecture/singleton.aspx
- 设计模式单件(Singleton)---对象创建型模式
- Singleton(单件)- 对象创建型模式
- 对象创建型——单件模式(Singleton)
- 1.5 Singleton(单件) -- 对象创建型模式
- SINGLETON( 单件) —对象创建型模式
- Singleton单件(创建型模式)
- 创建型模式:Singleton(单件)
- 单列模式(Singleton Pattern、单态模式、单件模式、对象创建型模式)
- [设计模式]SINGLETON(单件)_对象创建型模式
- (创建型模式)Singleton 单件模式
- (创建型模式)Singleton 单件模式
- C#面向对象设计模式纵横谈(2): Singleton单件(创建型模式)
- [整理]C#面向对象设计模式纵横谈(2):Singleton单件(创建型模式)
- 面向对象设计模式学习(二):Singleton单件创建型模式
- 1. 单件模式(Singleton Pattern) ---------- 创建型模式
- 设计模式--单件模式Singleton(创建型)
- Singleton单件(创建型模式)
- Singleton 单件(创建型模式)
- Membase和Java入门
- java 深克隆与浅克隆
- 《人生的意义与价值 》季羡林
- tomcat启动异常:Address already in use: JVM_Bind
- jsp应用开发详解笔记
- Singleton(单件)- 对象创建型模式
- ssh纲要(一)
- 如何导入和导出应用数据通过电子邮件应用程序在你的IOS
- oracle脚本命令
- 转发一个贴子,或许对朋友们有帮助,请不要拍我喽
- 解剖实体框架(1)--实体与操作类
- servlet研究
- 正则表达式
- Python学习笔记 OS模块