单例模式单例模式是一种常见的设计模式。
常见的单例模式:懒汉式单例、饿汉式单例。
单例模式有一下特点:
1、单例类只能有一个实例。
2、单例类必须自己自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
饿汉:因为加载类的时候就创建实例,所以线程安全(多个ClassLoader存在时例外)。缺点是不能延时加载。
懒汉:需要加锁才能实现多线程同步,但是效率会降低。优点是延时加载。
懒汉式单例在类加载的时候不创建单例实例。只有在第一次请求实例的时候的时候创建,并且只在第一次创建后,以后不再创建该类的实例。
/***单例模式-懒汉式单例*/
public class EagerSingleton {
/**私有的(private)唯一(static final)实例成员,在类加载的时候就创建好了单例对象*/
private static final EagerSingleton m_instance = new EagerSingleton();
/*** 私有构造方法,避免外部创建实例 */
private EagerSingleton() {}
/*** 静态工厂方法,返回此类的唯一实例.* @return EagerSingleton */
public static EagerSingleton getInstance() {
return m_instance;
}
}
饿汉式单例在类被加载的时候,唯一实例已经被创建。这个设计模式在Java中容易实现,在别的语言中难以实现。
public class Singleton{
private static Singleton instance=null;
/*
* 首先单例模式只能存在一个实例
* 所以构造函数必须私有
*/
private Singleton(){}
/*
* 然后外部必须能够访问到一个方法获取这个单例的对象
* 因此这个方法必须是共有的静态方法
*/
public synchronized static Singleton getInstance(){
if(null == instance){
instance=new Singleton();
}
return instance;
}
}
分享到:
相关推荐
java设计模式,单例模式学习示例源码,创建单例,配置文件读取
设计模式-单例模式 学习时候联系的代码,可以进行参考
自己对于单例模式的一些学习总结
设计模式C++学习之单例模式(Singleton)
单例模式的七种实现方法以及分析,可以作文大作业提交 1.前言 4 1.1 课题的研究背景 4 1.2 课题主要研究目标 4 2.相关技术简介 4 2.1Java简介 4 2.2IDEA简介 4 3. 单例模式的7种实现方式 5 ...5.设计模式学习总结: 15
NULL 博文链接:https://xiandaoyan.iteye.com/blog/663348
实用Java的单例模式,实用于Java学习者 单例模式 单例模式
单例模式是个简单的java模式之一!有助于为学习后面的22种模式打下基础!
通过学习java 简单总结单例模式与装饰者模式,做一下入门总结,主要讲述单例模式中饿汉式与懒汉式的相同点与不同点,方便理解记忆。
引入了单例模式来保证在全局调用中不会重复实例化这个类,降低系统资源的浪费,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务。 php的应用主要在于数据库应用, 所以一个应用中会...
设计模式单例模式PPT学习教案.pptx
单例模式,顾名思义,只有一个实例,因此这种模式只有在真正的需求“单一实例”的时候使用。它提供一种方法来确保某一特定类型有且只有一个实例。而且自行实例化,并向外部提供这个单一实例。 在它核心结构中,只...
Java单例模式代码,可能对初学者有用,贡献出来,也方便自己学习
java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种,下面提供了单例模式的示例
C#设计模式学习与演变过程-2-单例模式,通过代码的演变过程系统地学习单例模式,代码包括:简单单例、加锁单例、双检单例、饿汉式单例。
第 单例模式PPT学习教案.pptx
简单MVC模式结构,php,包括ajax,单例模式,适合php初级开发者学习 如有问题,
demo python使用装饰器(Decorator)的方式实现单例模式 functools.wraps 则可以将原函数对象的指定属性复制给包装函数对象, 默认有 __module__、__name__、__doc__,或者通过参数选择
《C++20设计模式》学习笔记-第5章单例模式
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在