定义
Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”
分析
从定义中可以看出单例的要点有三个:一是某个类只能有一个实例;二是必须自行创建这个实例;三是必须自行向系统提供这个实例。
实现角度看就是要有以下三点:一是类只提供私有的构造函数(方法);二是类定义中含有一个该类的私有静态对象;三是该类提供了一个共有的函数(方法)用于创建或获取它本身的静态私有对象。
动机
1.节约内存
2.避免当多个实例存在的时候,引起程序逻辑错误
实现1_懒汉方式
public class Singleton1 { private static Singleton1 singleton = null; private Singleton1() { } public static Singleton1 getInstance () { if (singleton == null) { singleton = new Singleton1(); } return singleton; } }
实现2_恶汉方式(线程安全)
public class Singleton2 { private static Singleton2 singleton = new Singleton2(); private Singleton2() { } public static Singleton2 getInstance() { return singleton; } }
实现3_双重锁方式(线程安全)
public class Singleton3 { private static Singleton3 singleton = null; private Singleton3() { } /** * 这个模式将同步内容下方到if内部,提高了执行的效率, * 不必每次获取对象时都进行同步,只有第一次才同步,创建了以后就没必要了。 * @author Perlin * @date 2014-6-30 * @return */ public static Singleton3 getInstance () { if (singleton == null) { synchronized (Singleton3.class) { if (singleton == null) { singleton = new Singleton3(); } } } return singleton; } }
相关推荐
设计模式——单例 例子和一些ppt 看下没错的
NULL 博文链接:https://794950040.iteye.com/blog/2208104
C++设计模式——单例模式-附件资源
单例的5中实现及反射和反序列化破解单例。
今天给大家带来的是23种设计模式的第一种——单例模式。前天写的第一篇文章设计模式的七大原则,是我第一次写文章,目前看了浏览量,让我信心大增。文章有什么讲述方式不对的欢迎大家随时给我私信。24小时恭候!!...
对应博客讲解:http://blog.csdn.net/t1234xy4/article/details/52419546
单例模式源代码 博文链接:https://yangguangfu.iteye.com/blog/815944
单例模式设计。
1)程序功能:单例模式设计Memcache和Redis操作类,采用PHP编写。 2)程序详解地址:http://blog.csdn.net/clevercode/article/details/46410055。 3)原创作品,出自"CleverCode的博客",分类为《设计模式之PHP项目...
本篇文章主要介绍了android开发设计模式之——单例模式详解,具有一定的参考价值,有需要的可以了解一下。
NULL 博文链接:https://maidoudao.iteye.com/blog/1329564
单例模式的实现饿汉式懒汉式线程安全的懒汉式登记式单例模式的优缺点单例模式的优点单例模式的缺点 单例模式是23个模式中比较简单的模式,应用也非常广泛 什么是单例模式? 单例模式的定义: Ensure a class ...
我们经常遇到这样的场景,线程A和线程B对同一个对象执行操作,但是在A里面new了后,B里面不便取,使的A,B对象是同一个对象,我们就会使用单例模式了。在Android中我们常用于数据库操作,蓝牙命令控制,以及一些工具...
首先我介绍的是设计模式中比较简单的一个模式——单例模式(因为这里只牵涉到一个类) 二、单例模式的介绍 说到单例模式,大家第一反应应该是——什么是单例模式?,从“单例”字面意思上理解为——一个类只有...
最近在设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的...首先我介绍的是设计模式中比较简单的一个模式——单例模式(因为这里只牵涉到一个类)
单例模式大家并不陌生,也都知道它分为什么懒汉式、饿汉式之类的。但是你对单例模式的理解足够透彻吗?今天我带大家一起来看看我眼中的单例,可能会跟你的认识有所不同。很容易看出,上面这段代码在多线程的情况下是...