PART 1 快速预览
- 单例实现1:经典单例模式(Classic singleton pattern)
- 实现延迟实例化(Lazy instantiaze);线程不安全(thread-unsafe)
- 可用来学习单例模式思想,但是因为线程不安全,所以不建议使用。
/**
* Classic singleton pattern
* @author <a href="mailto:ifuteng@gmail.com">futeng</a>
*/
public class Singleton {
// private static variable
private static Singleton singleton;
// private constructor
private Singleton() {
// do something useful such as initialized data
}
// provides a global point of access to it
public static Singleton getInstance() {
if ( singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
- 单例实现2:对方法同步加锁式单例(Synchronized method singleton pattern)
- 实现延迟实例化(Lazy instantiaze);线程安全(thread safe);每次访问都要等候别的线程离开该方法,性能低。
- 解决了经典单例模式线程不安全的问题,但是性能低下,所以不建议使用。
/**
* Synchronized method singleton pattern
* @author <a href="mailto:ifuteng@gmail.com">futeng</a>
*/
public class Singleton {
private static Singleton singleton;
private Singleton() {}
public static synchronized Singleton getInstance() {
if ( singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
- 单例实现3:无延迟实例化式单例(Eagerly instantiaze singleton pattern)
- 非延迟实例化(eagerly instantiaze);线程安全(thread safe);
- 在类加载的第一时间被初始化,大部分场景都可胜任。丢失了延迟实例化特性,这带来的遗憾是还未被调用就已经实例化了。
/**
* Eagerly singleton pattern
* @author <a href="mailto:ifuteng@gmail.com">futeng</a>
*/
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {}
public static synchronized Singleton getInstance() {
return singleton;
}
}
- 单例实现4:双重检测加锁式单例(Double-checked locking singleton pattern)
- 实现延迟实例化(Lazy instantiaze);线程安全(thread safe);
- 在最佳的单例实现,稍微复杂。
/**
* Double checked singleton pattern
* @author <a href="mailto:ifuteng@gmail.com">futeng</a>
*/
public class Singleton {
private volatile static Singleton singleton = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
if ( singleton == null) {
synchronized (Singleton. class) {
if ( singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
PART 2 细细品鉴
分享到:
相关推荐
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...
4、单例模式(Singleton Pattern) 用意:仅允许生成一个对象时
Singleton pattern单例模式应用
主要为大家详细介绍了C#单例模式Singleton Pattern的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了C#单例模式(Singleton Pattern)的实现方法,主要讲述了即时加载的单例模式、延迟加载的单例模式与线程安全的单例模式,需要的朋友可以参考下
单例模式 Singleton Pattern 问题解决: (1)单例模式简介: Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有...
NULL 博文链接:https://lym6520.iteye.com/blog/695374
3、单例模式SINGLETON PATTERN 4、多例模式MULTITION PATTERN 5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 学习demo
单例模式(Singleton Pattern) 保证整个系统中,对于某个对象,只能存在一个对象实例,该类值提供一个获取器对象的方法 当我们频繁的创建和销毁对象,会消耗大量资源,当我们使用对象通过new,将产生大量的对象实例,而单例...
一个类可以创建多个对象,这是面向对象的语言特性,想要实现单例模式,就要屏蔽这个特性,防止系统可以随意创建类的对象。 要做到这一点,通常做法就是利用private关键字将类的构造方法私有化,使外部调用者无法利用...
单例模式(Singleton Pattern)是设计模式中最简单的模式之一,属于创建型模式。这种设计模式主要是类的对象只有一个实例,不需要每次new 创造。而我们要做的的就是确保这个对象创建的唯一。然后根据一些特征进行...
单例模式(Singleton Pattern)是 Java 中最常见的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式属于创建型模式 单例模式的常见写法 一、饿汉式单例 顾名思义饿汉式单例是在类加载的时候就立即初始化...
单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 2. 结构型模式 适配器模式(Adapter Pattern) 桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria ...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...
单例模式[SINGLETON PATTERN] 多例模式[MULTITION PATTERN] 工厂方法模式[FACTORY METHOD PATTERN] 抽象工厂模式[ABSTRACT FACTORY PATTERN] 门面模式[FACADE PATTERN] 适配器模式[ADAPTER PATTERN] 模板方法模式...