单例模式(Singleton)-保证一个类仅有一个实例,并提供一个访问它的全局访问点。
来源:互联网 发布:justin和selena知乎 编辑:程序博客网 时间:2024/06/05 10:02
单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。
(1)懒汉式实现示例代码如下:
/**
* 懒汉式单例实现的示例
*/
public class Singleton {
/**
* 定义一个变量来存储创建好的类实例
*/
private static Singleton uniqueInstance = null;
/**
* 私有化构造方法,可以在内部控制创建实例的数目
*/
private Singleton(){
//
}
/**
* 定义一个方法来为客户端提供类实例
* @return 一个Singleton的实例
*/
public static synchronized Singleton getInstance(){
//判断存储实例的变量是否有值
if(uniqueInstance == null){
//如果没有,就创建一个类实例,并把值赋值给存储类实例的变量
uniqueInstance = new Singleton();
}
//如果有值,那就直接使用
return uniqueInstance;
}
/**
* 示意方法,单例可以有自己的操作
*/
public void singletonOperation(){
//功能处理
}
/**
* 示意属性,单例可以有自己的属性
*/
private String singletonData;
/**
* 示意方法,让外部通过这些方法来访问属性的值
* @return 属性的值
*/
public String getSingletonData(){
return singletonData;
}
}
(2)饿汉式实现,示例代码如下:
/**
* 饿汉式单例实现的示例
*/
public class Singleton {
/**
* 定义一个变量来存储创建好的类实例,直接在这里创建类实例,只能创建一次
*/
private static Singleton uniqueInstance = new Singleton();
/**
* 私有化构造方法,可以在内部控制创建实例的数目
*/
private Singleton(){
//
}
/**
* 定义一个方法来为客户端提供类实例
* @return 一个Singleton的实例
*/
public static Singleton getInstance(){
//直接使用已经创建好的实例
return uniqueInstance;
}
/**
* 示意方法,单例可以有自己的操作
*/
public void singletonOperation(){
//功能处理
}
/**
* 示意属性,单例可以有自己的属性
*/
private String singletonData;
/**
* 示意方法,让外部通过这些方法来访问属性的值
* @return 属性的值
*/
public String getSingletonData(){
return singletonData;
}
}
关于饿汉式、懒汉式的名称说明:
饿汉式、懒汉式其实是一种比较形象的称谓。
所谓饿汉式,既然饿,那么在创建对象实例的时候就比较着急,饿了嘛,于是就在装载类的时候就创建对象实例,写法如下:
private static Singleton uniqueInstance = new Singleton();
所谓懒汉式,既然是懒,那么在创建对象实例的时候就不着急,会一直等到马上要使用对象实例的时候才会创建,懒人嘛,总是推托不开的时候才去真正执行工作,因此在装载对象的时候不创建对象实例,写法如下:
private static Singleton uniqueInstance = null;
而是等到第一次使用的时候,才去创建实例,也就是在getInstance方法里面去判断和创建
示例代码转自:http://student.csdn.net/space.php?uid=1294199&do=blog&id=48260
- 单例模式(Singleton)-保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- 单例模式--能够保证一个类仅有唯一的实例,并提供一个全局访问点。
- 单例模式--确保一个类只有一个实例,并提供一个全局访问点。
- 保证类只有一个实例(Singleton)
- GOOD单例模式,多线程同时访问一个实例对象问题的处理,加lock
- 单例模式,多线程同时访问一个实例对象问题的处理,加lock .
- JAVA文件锁之保证仅有一个实例运行
- 编写一个Singleton类(单例模式)
- Singleton设计模式(一个类只允许一个实例)
- 一个启动供手机客户端访问服务端的简例
- 单例模式的运用-保证实例化一个抽象工厂
- 能否写一个单例模式,并且保证实例的唯一性?
- 单例模式(一个类只能创建一个实例)
- 编写一个单例(Singleton)类
- 设计一个单例模式:Singleton
- 实现一个单例模式Singleton
- 设计一个线程安全的单例(Singleton)模式
- 使用VS2013 实现一个简单的单例模式singleton
- 避免 页面弹出 安全风险提示,可以使用的 页面头 脚本.
- Open-flash-chart与PHP交互Get传参
- C#操作Excel文件 之三
- 怎样实现Android系统的HAL(硬件适配层)(转)
- 美到极致是疯狂
- 单例模式(Singleton)-保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- mysql 批量数据提交jdbc
- 关于eclipse插件方式的加载
- TEXTMETRIC 结构详解
- 添加mysql服务
- javascript插入下拉框的数据 &&通过javascript传参PHP方法
- WPF 自定义快捷键命令(Command)(转)
- 请问这个JTextArea 的滚动条怎么不跟着滚动啊
- PHP静态变量