单例模式
2015-10-04 17:23
253 查看
单例模式的要点有三个:
一是某个类只能有一个实例;
二是它必须自行创建这个实例;
三是它必须自行向整个系统提供这个实例。
单件模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
图1单例模式(Singleton)结构图
单例模式(Singleton)是几个创建模式中最对立的一个,它的主要特点不是根据用户程序调用生成一个新的实例,而是控制某个类型的实例唯一性,通过上图我们知道它包含的角色只有一个,就是Singleton,它拥有一个私有构造函数,这确保用户无法通过new直接实例它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法Instance()。Instance()方法负责检验并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。
图2单例模式(Singleton)逻辑模型
6种不同的单例模式(Singleton)的实现方式。这些实现方式都有以下的共同点:
有一个私有的无参构造函数,这可以防止其他类实例化它,而且单例类也不应该被继承,如果单例类允许继承那么每个子类都可以创建实例,这就违背了Singleton模式“唯一实例”的初衷。
单例类被定义为sealed,就像前面提到的该类不应该被继承,所以为了保险起见可以把该类定义成不允许派生,但没有要求一定要这样定义。
一个静态的变量用来保存单实例的引用。
一个公有的静态方法用来获取单实例的引用,如果实例为null即创建一个。
http://www.cnblogs.com/rush/archive/2011/10/30/2229565.html
一是某个类只能有一个实例;
二是它必须自行创建这个实例;
三是它必须自行向整个系统提供这个实例。
单件模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
图1单例模式(Singleton)结构图
单例模式(Singleton)是几个创建模式中最对立的一个,它的主要特点不是根据用户程序调用生成一个新的实例,而是控制某个类型的实例唯一性,通过上图我们知道它包含的角色只有一个,就是Singleton,它拥有一个私有构造函数,这确保用户无法通过new直接实例它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法Instance()。Instance()方法负责检验并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。
图2单例模式(Singleton)逻辑模型
6种不同的单例模式(Singleton)的实现方式。这些实现方式都有以下的共同点:
有一个私有的无参构造函数,这可以防止其他类实例化它,而且单例类也不应该被继承,如果单例类允许继承那么每个子类都可以创建实例,这就违背了Singleton模式“唯一实例”的初衷。
单例类被定义为sealed,就像前面提到的该类不应该被继承,所以为了保险起见可以把该类定义成不允许派生,但没有要求一定要这样定义。
一个静态的变量用来保存单实例的引用。
一个公有的静态方法用来获取单实例的引用,如果实例为null即创建一个。
http://www.cnblogs.com/rush/archive/2011/10/30/2229565.html
相关文章推荐
- WKID对应坐标系
- pat1023Have Fun with Numbers (20)
- 计算机硬件组成以及核心硬件
- php mysqli_connect_error()与mysqli_connect_errno()函数的区别
- 用Python学习统计学基础-6
- MySQL 最经常使用的一千行
- tcpdump分析网络故障的例子
- GOF 23 设计模式 之 模版方法模式(template method)
- 机器学习算法-K最近邻从原理到实现(Python)
- Codeforces Round #323 (Div. 2) (583A,583B,582A,582B)
- EF异常:对一个或多个实体的验证失败
- 摩托罗拉SE4500 德州仪器TI Omap37xx/AM3715/DM3730/AM3530 wince6.0/Windows Mobile 6.5平台 二维软解调试记录及相关解释
- 摩托罗拉SE4500 德州仪器TI Omap37xx/AM3715/DM3730/AM3530 wince6.0/Windows Mobile 6.5平台 二维软解调试记录及相关解释
- C++ map容器 按照value值排序
- 如何使用tcpdump来捕获TCP SYN,ACK和FIN包
- java微信开发需具备的条件
- HDU 2501 Tiling_easy version(我也是醉了,竟然是一样的代码)
- 【python】python2.x 与 python3.x区别对照+缩进错误解决方法
- hibernate的工作原理以及为什么要使用hibernate
- 能量获取