1什么是单例模式?
单例模式是一种常见的软件设计模式.
2单例模式的特点:2.1只有一个实例.
2.2单例类必须自己创建自己的唯一实例.
2.3单例类必须为其他类提供自己的唯一实例.
3分类:3.1懒汉式单例模式,3.2饿汉式单例模式,3.3登记式单例模式4其他单例模式
3.1.1懒汉式单例模式(线程不安全)
package lazysingleton; /** *@author kira_j *线程不安全的懒汉型单例模式 */ public class Singleton { private static Singleton instance; private Singleton(){ } public static Singleton getInstance(){ if (instance==null){ instance=new Singleton(); } return instance; } }
3.1.2线程安全的懒汉单例模式
package lazysingleton_sys; /** * @author kira_j * 线程安全适合多线程的懒汉型单例模式 */ public class Singleton { private static Singleton instance; private Singleton(){ } synchronized public static Singleton getInstance(){ if (instance==null){ instance=new Singleton(); } return instance; } }
3.1.3含有静态内部类的懒汉型单例模式
package lazysingleton_inner; /** * @autor kira_j * 静态内部类(懒汉的变种) */ public class Singleton { private static class SingletonInstanceHolder{ private static final Singleton instance=new Singleton(); } private Singleton(){ } public static Singleton getInstance(){ return SingletonInstanceHolder.instance; } }
3.2.1饿汉型单例模式
package eagersingleton; /** * @author kira_j * */ /*public class Singleton { private static Singleton instance=new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return instance; } }*/ public class Singleton{ private static Singleton instance; static{ instance=new Singleton(); } private Singleton(){ } public static Singleton getInstance(){ return instance; } }
缺点:类一加载就初始化,容易占用内存。
3.3登记式单例模式
package regsingleton; import java.util.HashMap; /** * 登记式单例模式 */ public class Singleton { private static HashMap map; private static Singleton instance; static{ map=new HashMap(); instance=new Singleton(); map.put(instance.getClass().getName(),instance); } private Singleton(){ } public static Singleton getInstance(String name){ if (name==null){ name=instance.getClass().getName(); } if (map.get(name)==null){ try { map.put(name,Class.forName(name).newInstance()); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } return (Singleton) map.get(name); } }
其他类型的单例模式
4.1
package singleton_enum; /** * 枚举 */ public enum Singleton { INSTANCE; public void whatEverMethod(){ } }
相关推荐
单例模式单例模式单例模式单例模式单例模式单例模式单例模式单例模式
C#单例模式C#单例模式详解C#单例模式详解C#单例模式详解
单例模式详解~~单例模式详解~~单例模式详解~~
2020-02-10 王争设计模式之美进入课程讲述:冯永吉时长 10:21大小 8.31M上两节课中,我们针对单例模式,讲解了单例的应用场景、几种常见的代码实现
首先向关注过我这个系列...这立刻让我想到了最常用也是最简单最容易理解的一个设计模式 单例模式 何为 单例模式 ? 故名思议 即 让 类 永远都只能有一个实例。 由于 示例代码 比较简单 我也加了注释,这里就不在赘述
单例模式是最简单的设计模式之一,但是对于Java的开发者来说,它却有很多缺陷。在本月的专栏中,David Geary探讨了单例模式以及在面对多线程(multithreading)、类装载器(classloaders)和序列化(serialization)时...
单例模式的七种实现方法以及分析,可以作文大作业提交 1.前言 4 1.1 课题的研究背景 4 1.2 课题主要研究目标 4 2.相关技术简介 4 2.1Java简介 4 2.2IDEA简介 4 3. 单例模式的7种实现方式 5 3.1饿汉式(使用静态常量...
一个简单的java工程,包含注释,一目了然,其中包含了单例模式的所有实现方式,懒汉式,饿汉式,双重校验,枚举,静态内部类等方式实现单例。
单例模式--只能弹出一个窗体 只能弹出一个窗体
设计模式之七种单例模式代码及ppt,包含多线程环境测试和反序列化测试
单例模式和工厂模式结合应用,实现了产品的生产,适合用做课程设计,包含详细文档和代码。Java语言。喜欢的可以下载来看看那
几种单例模式的书写方式
使用单例模式创建学生管理系统(饿汉式、懒汉式)
php单例模式php单例模式php单例模式php单例模式
模式就像是OOP开发人员的配方,每种模式都提供了所需的成分。模式对OOP开发人员尤其有用,因为它有助于创建稳定的API,...本章将介绍两种常用的模式:单例模式和工厂模式。前者被称为类的职责,后者被称为类的多态性。
这个讲的是单例模式的多种不同实现方式,希望对单例感兴趣的同学看看
是http://blog.csdn.net/lxq_xsyu/article/category/1544127博客中java设计模式的源代码。下载前请先看《设计模式——单例模式》一文。
Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式...
设计模式C++学习之单例模式(Singleton)
此示例展示了Qml 的单例模式(类似全局对象,只生成一次实例,可全局使用) surfsky.cnblogs.com