所谓的单例模式是指单个实例,单即单个的意思,例乃实例的意思,就是一个类生成的对象。因此,单例模式的功能作用就是保证一个类只生成一个对象,是在代码级的实现,不是人工维护的。
单例模式的实现需要以下两个步骤:
1.单例类有一个存贮单例的私有属性
2.单例类的构造方法必须是私有的
3.单例类要有获取单例类实例的静态方法
单例类示例:
package com.tao.pattern.singleton;
/**
* @author TaoistWar
*
*/
public class Singleton {
// 1.单例类有一个存贮单例的私有属性
private static Singleton singleton = new Singleton();
// 2.单例类的构造方法必须是私有的
private Singleton() {
}
// 3.单例类要有获取单例类实例的静态方法
public static Singleton getInstance() {
return singleton;
}
}
package com.tao.pattern.singleton;
/**
*
* @author TaoistWar
*
*/
public class LazySingleton {
// 1.单例类有一个存贮单例的私有属性
private static LazySingleton singleton;
// 2.单例类的构造方法必须是私有的
private LazySingleton() {
}
// 3.单例类要有获取单例类实例的静态方法
public synchronized static LazySingleton getInstance() {
if (singleton == null) {
singleton = new LazySingleton();
}
return singleton;
}
}
比较:
饿汉式单例:加载时生成单例,获取单例时不需要考虑多线程
懒汉式单例:调用时生成单例,获取单例时如果多线程需要加synchronized锁定方法以保证单例。
结论:
因为在我们的开发中,如果使用单例模式,肯定会用到,废话!呵呵。所以,每次调用加个synchronized锁的效率没有不加高。因此,推荐第一种直接在私有属性中生成实例。
分享到:
相关推荐
Java面向对象(高级)-- 单例(Singleton)设计模式
java Singleton单例模式 java Singleton单例模式
设计模式系列之01-单例模式(Singleton模式),很好的资源,理论实践结合讲述,逐步更新
NULL 博文链接:https://linxingliang.iteye.com/blog/1217811
C#面向对象设计模式纵横谈 第二课 Singleton 单件(创建型模式)
设计模式总结-模板设计模式,单例模式(singleTon)
Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)
简单的单例模式举例Singleton 分为恶汉式 懒汉式
设计模式C++学习之单例模式(Singleton)
此示例展示了Qml 的单例模式(类似全局对象,只生成一次实例,可全局使用) surfsky.cnblogs.com
一个java线程安全的单例模式:饥饿模式和延迟加载
在Java应用中,单例对象能保证在一个...3、有些像交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了,只有使用单例模式,才能保证核心交易服务器独立控制整个流程。 CSDN代码的详细解释。
创建型模式(Creational Pattern) 是对类的实例化过程的抽象化。一些系统在创建对象时,需要动态地决定怎样创建对象,创建哪些对象,以及如何组合和表示这些对象。创建型模式描述了怎样构造和封装这些动态的决定...
akka-cluster-singleton-example Akka Cluster - 单例使用示例
单例模式的特点有三: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,...
- 单例模式(Singleton) - 建造者模式(Builder) - 原型模式(Prototype) - 代理模式(Proxy) - 适配器模式(Adapter) - 装饰器模式(Decorator) - 桥接模式(Bridge) - 组合模式(Composite) - 外观模式(Facade) ...
单例模式 Singleton 单例模式线程安全问题和拓展
java设计模式,单例模式的不同实现方式
perl-Class-Singleton-1.4-6.el6.noarch.rpm perl-Class-Singleton-1.4-6.el6.noarch.rpm
singleton单例模式1