动机:
在软件系统中,经常需要一些这样特殊的类,必须保证它在系统中只有一个实例。才能保证它的逻辑正确性、及良好的效率。
方案一:
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;
}
}
分享到:
相关推荐
第二章至第五章,作者们详细讲解了五种创建型设计模式:单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这五种模式都...
【单例模式】是软件设计模式中的重要概念,它的核心目标是确保一个类在整个应用程序中只存在一个实例,并提供一个全局访问点来获取这个唯一实例。这样做的好处在于减少资源的消耗,因为只需要创建一次对象,同时也能...
- 单例模式(Singleton):保证一个类只有一个实例,并提供全局访问点。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式(Abstract Factory):提供...
- **1.3 Singleton模式**:单例模式确保一个类只有一个实例,并提供一个全局访问点。 - **1.4 Builder模式**:构建者模式允许你逐步构建复杂对象。该模式允许你使用相同的构建过程创建不同的表示。 - **1.5 ...
- 单例模式(Singleton):保证一个类只有一个实例,并提供一个全局访问点。 - 原型模式(Prototype):通过复制已有对象来创建新对象,避免重复构造过程。 - 工厂方法模式(Factory Method):定义一个用于创建...
GoF 设计模式GoF所提出的23种...单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。原型(Prototype)模式:将一个对象作为原型,通过对其进行复制
- **1.3 Singleton模式**:单例模式确保一个类只有一个实例,并提供一个全局访问点。这对于控制对资源的访问特别有用,例如数据库连接。 - **1.4 Builder模式**:构建者模式将一个复杂对象的构建与其表示分离,使得...
1. **单例模式 (Singleton)**:确保一个类只有一个实例,并提供全局访问点。在Java中,通常通过私有构造函数和静态工厂方法实现。这种方式可以避免多线程环境下的并发问题,确保线程安全。 2. **工厂模式 (Factory ...
今天我们将聚焦于其中的三种:工厂模式、单例模式和观察者模式。 **1. 工厂模式** 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,工厂对象负责...
- 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式(Abstract Factory):...
3. Singleton 模式:单例模式是一种创建型模式,保证一个类仅有一个对象,并提供一个访问它的全局访问点。该模式的优点是能够避免实例化多个对象,减少系统资源的消耗。 4. Builder 模式:创建者模式是一种创建型...
1. 创建型模式(Creational Patterns):包括单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)。这些模式关注的是如何...
- **缺点**:破坏了单一职责原则,同时单例模式的实现容易成为系统中的耦合点。 4. **Builder模式** - **定义**:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 - **应用场景**...
《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)是设计模式领域的经典著作,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者合著...
在GOF的《设计模式:可复用面向对象软件的基础》中,单例模式的定义是:保证一个类只有一个实例,并提供一个访问它的全局访问点。为了实现这个模式,通常需要以下几个步骤: 1. 将类的构造函数设为私有(private)...
- **单例模式**(Singleton):确保一个类只有一个实例,并提供全局访问点。 - **工厂方法模式**(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - **抽象工厂模式**(Abstract ...
- **1.3 Singleton模式**:单例模式确保一个类只有一个实例,并提供一个全局访问点。这种模式通常用于管理共享资源,如配置文件、数据库连接等。在C++中,可以通过私有构造函数和静态成员函数来实现单例模式。 - **...
- 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 - 原型模式(Prototype):通过复制已有对象来创建新对象,避免重复构造过程。 - 工厂方法模式(Factory Method):定义一个创建对象的...
- 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 - 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - 抽象工厂模式(Abstract Factory):提供...