`

单例模式(Singleton)的两种实现方式

    博客分类:
  • java
阅读更多
第一种方式:
package com.test.util;

public class SingletonTest {
	public void main(String[] args) {
		Singleton singleton = Singleton.getInstance();
		Singleton singleton2 = Singleton.getInstance();

		System.out.println(singleton == singleton2);
	}
}

class Singleton {
	private static Singleton singleton = new Singleton();

	private Singleton() {

	}

	public static Singleton getInstance() {
		return singleton;
	}
}


第二种实现方式:
package com.spring;

public class SingletonTest2 {
	public void main(String[] args) {
		Singleton singleton = Singleton.getInstance();
		Singleton singleton2 = Singleton.getInstance();

		System.out.println(singleton == singleton2);
	}
}

class Singleton {

	private static Singleton singleton;

	private Singleton() {
		
	}

	public static Singleton getInstance() {
		if (singleton == null) {
			singleton = new Singleton();
		}
		return singleton;
	}
}



相比较而言,第一种实现方式更好更安全一些,第二种实现方式在多线程环境下有时会出现多例的错误!
分享到:
评论

相关推荐

    Singleton两种代码实现

    单例模式,Singleton两种代码实现。一般实现方法,泛型实现方法(推荐)

    C++两种线程安全的单例模式的实现

    使用"懒汉模式"与"饿汉模式"实现c++的单例模式,并且确保了单例模式的第一次实例化的线程安全,以及程序结束时,单例对象的资源收回,以防内存资源的泄漏

    .Net 单例模式(Singleton)

     单例模式 Singleton Pattern 问题解决: (1)单例模式简介: Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有...

    c# 单例模式的实现方法

    单例模式的实现分为两种:饿汉式和懒汉式。前者是在静态构造函数执行时就立即实例化,后者是在程序执行过程中第一次需要时再实例化。两者有各自适用的场景,实现方式也都很简单,唯一在设计时要考虑的一个问题就是:...

    常见设计模式—单例模式(Singleton)

    单例模式(Singleton Pattern)是设计模式中最简单的模式之一,属于创建型模式。这种设计模式主要是类的对象只有一个实例,不需要每次new 创造。而我们要做的的就是确保这个对象创建的唯一。然后根据一些特征进行...

    Objective C 单例模式设计源码

    单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一...

    [创建型模式] 单例模式(Singleton Pattern)

    单例模式有两个特点: 在系统的整个生命周期内,单例对象最多只能有一个 单例对象必须由单例类自行创建,并对外提供访问入口 一个类可以创建多个对象,这是面向对象的语言特性,想要实现单例模式,就要屏蔽这个特性...

    单例模式详解

    但是如果在“对象创建的次数以及何时被创建”这两点上较真起来,Singleton模式可以相当的复杂,比头五种模式加起来还复杂,譬如涉及到DCL双锁检测(double checked locking)的讨论、涉及到多个类加载器...

    C#中的五种单例模式(SIngleton)

    1. 写法一(只适用于单线程环境) public sealed class Singleton1 { private Singleton1(){} private static Singleton1 instance = null; public static Singleton1 Instance ...若两个线程同时判读instan

    单例模式 java

    单例模式中的优化后的优化后的懒汉;单实例(单例模式: singleton ?)最核心?! 构造器私有化?!Singleton?!(最好两种方法)

    详解C++实现线程安全的单例模式

    单例模式分为懒汉模式,跟饿汉模式两种。 首先给出饿汉模式的实现 正解: template class singleton { protected: singleton(){}; private: singleton(const singleton&){};//禁止拷贝 singleton& operator=...

    Python经典面试题.doc

    Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式: 1. class Singleton(type): def __init__(cls, name, bases, dict): super(Singleton, cls).__init__(name, bases, dict) cls....

    设计模式整理(很全)

    设计模式之Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder模式就是将这两种情况分开进行。 设计模式之Prototype(原型) 用原型实例指定创建对象的种类,...

    js单例模式的两种方案

    代码如下://方案一 var SingletonTester = (function () { //单例方法 function Singleton(args) { var args = args || {}; this.name = ‘SingletonTester’; //方法对外的属性,另外一种方式就是返回对象 this....

    JAVA设计模式23种

    设计模式之Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new一样频繁. 设计模式...

    设计模式的代码样例

    单例模式的实现通常有两种方式:“饿汉式”和“懒汉式”。 单例模式是将将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过提供的入口获得[例如getInstance()方法...

    春招你必须掌握的Python经典面试题

    Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式: 1/用类 class Singleton(type): def __init__(cls, name, bases, dict): super(Singleton, cls).__init__(name, bases, dict) ...

Global site tag (gtag.js) - Google Analytics