`
小牛犊
  • 浏览: 96935 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

GoF:Singleton单例模式

阅读更多

动机:

在软件系统中,经常需要一些这样特殊的类,必须保证它在系统中只有一个实例。才能保证它的逻辑正确性、及良好的效率。

 

方案一:

public class Singleton1 {
	private Singleton1(){
	}
	private static Singleton1 singleton;
	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;
	}
}

    这种基本上解决了多线程的问题,但是不能传入参数。

 

方案三:

public class Singleton3 {
	private static class Singleton3Holder{
		private static Singleton3 singleton=new Singleton3();
	}
    private Singleton3(){
    	
    }
    public static Singleton3 getInstance(){
		return Singleton3Holder.singleton;
	}
}

 方案四:

public class Singleton4 {
	private Singleton4(){
	}
	private static Singleton4 singleton=null;
	public static Singleton4 getInstance(){
		if(singleton==null){
                                        sychronized (Singleton4.class){
                                                if(singleton==null){
			    singleton=new Singleton4();
                                                }
                                        }
		}
		return singleton;
	}
}

 

分享到:
评论

相关推荐

    GoF:设计模式--可复用面向对象软件的基础(1-5章)

    第二章至第五章,作者们详细讲解了五种创建型设计模式:单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这五种模式都...

    GOF23之单例模式

    【单例模式】是软件设计模式中的重要概念,它的核心目标是确保一个类在整个应用程序中只存在一个实例,并提供一个全局访问点来获取这个唯一实例。这样做的好处在于减少资源的消耗,因为只需要创建一次对象,同时也能...

    设计模式精解-GoF23种设计模式解析附C++实现源码

    - 单例模式(Singleton):保证一个类只有一个实例,并提供全局访问点。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式(Abstract Factory):提供...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **1.3 Singleton模式**:单例模式确保一个类只有一个实例,并提供一个全局访问点。 - **1.4 Builder模式**:构建者模式允许你逐步构建复杂对象。该模式允许你使用相同的构建过程创建不同的表示。 - **1.5 ...

    GOF 23种设计模式

    - 单例模式(Singleton):保证一个类只有一个实例,并提供一个全局访问点。 - 原型模式(Prototype):通过复制已有对象来创建新对象,避免重复构造过程。 - 工厂方法模式(Factory Method):定义一个用于创建...

    gof:GoF的23种设计模式

    GoF 设计模式GoF所提出的23种...单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。原型(Prototype)模式:将一个对象作为原型,通过对其进行复制

    GoF 23种设计模式解析附C++实现源码(2nd Edition

    - **1.3 Singleton模式**:单例模式确保一个类只有一个实例,并提供一个全局访问点。这对于控制对资源的访问特别有用,例如数据库连接。 - **1.4 Builder模式**:构建者模式将一个复杂对象的构建与其表示分离,使得...

    design-patterns-gof:GoF设计模式实现

    1. **单例模式 (Singleton)**:确保一个类只有一个实例,并提供全局访问点。在Java中,通常通过私有构造函数和静态工厂方法实现。这种方式可以避免多线程环境下的并发问题,确保线程安全。 2. **工厂模式 (Factory ...

    Java常用的3中设计模式代码即工厂模式、单例模式、观察者模式demo

    今天我们将聚焦于其中的三种:工厂模式、单例模式和观察者模式。 **1. 工厂模式** 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,工厂对象负责...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    - 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式(Abstract Factory):...

    设计模式精解-GOF23种设计模式解析(VS2012重写实现包含Linux-Makefile)-代码和原文档已插入本文档.pdf

    3. Singleton 模式:单例模式是一种创建型模式,保证一个类仅有一个对象,并提供一个访问它的全局访问点。该模式的优点是能够避免实例化多个对象,减少系统资源的消耗。 4. Builder 模式:创建者模式是一种创建型...

    GOF23设计模式讲解及C++源代码实现

    1. 创建型模式(Creational Patterns):包括单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)。这些模式关注的是如何...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    - **缺点**:破坏了单一职责原则,同时单例模式的实现容易成为系统中的耦合点。 4. **Builder模式** - **定义**:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 - **应用场景**...

    Java面向对象(高级)- 单例(Singleton)设计模式

    《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)是设计模式领域的经典著作,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者合著...

    C++设计模式之单例模式

    在GOF的《设计模式:可复用面向对象软件的基础》中,单例模式的定义是:保证一个类只有一个实例,并提供一个访问它的全局访问点。为了实现这个模式,通常需要以下几个步骤: 1. 将类的构造函数设为私有(private)...

    GOF23种设计模式源码

    - **单例模式**(Singleton):确保一个类只有一个实例,并提供全局访问点。 - **工厂方法模式**(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - **抽象工厂模式**(Abstract ...

    设计模式精解-GoF 23种设计模式解析

    - **1.3 Singleton模式**:单例模式确保一个类只有一个实例,并提供一个全局访问点。这种模式通常用于管理共享资源,如配置文件、数据库连接等。在C++中,可以通过私有构造函数和静态成员函数来实现单例模式。 - **...

    GOF之23种设计模式的C#实现:DesignPattern.zip

    - 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 - 原型模式(Prototype):通过复制已有对象来创建新对象,避免重复构造过程。 - 工厂方法模式(Factory Method):定义一个创建对象的...

    C++ 设计模式 GOF 23经典模式

    - 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式(Abstract Factory):提供...

Global site tag (gtag.js) - Google Analytics