单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例
两种形式:
1,饿汉式单例类
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
2,懒汉式单例类
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。
注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。
一般来说第一种比较安全。
分享到:
相关推荐
java设计模式中的单例模式,而单例模式又分为饿汉模式和懒汉模式
设计模式--单例模式java例子
李建忠老师的设计模式-单例模式讲解,示例以C++编程语言呈现。
JAVA-设计模式-创建型模式-单例模式
设计模式-单例模式 学习时候联系的代码,可以进行参考
设计模式-单例模式脑图
ava常用设计模式-单例模式
Java设计模式-单例模式详解
Java-设计模式-单例模式-实现源码(简单实现、双重检查锁、静态内部类、枚举类)
设计模式-单例模式(讲解及其实现代码)
设计模式专题之(一)单例模式---设计模式单例模式模式示例代码(python--c++)
常见设计模式-单例模式
c++设计模式-创建型模式-单例模式源码,懒汉式 饿汉式源码,qt工程,单例模式线程安全问题,单例模式实现方式
android 单例模式 干货 告诉你哪种单例模式最实用 最好用 不再迷茫
本文档,详细的描述了单例模式,有类图,java代码实例,以及讲解、注意点,通过这份文档可以让你很容易理解单例设计模式。
设计模式 For iOS-02-单例模式 严 格 严谨 详细的单例模式。
最简单的PHP设计模式,单例模式。大家可以参考下。
NULL 博文链接:https://linxingliang.iteye.com/blog/1217811
单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。