`
kmakxa
  • 浏览: 14987 次
社区版块
存档分类
最新评论

设计模式阅读模式(5)-------------单件模式

 
阅读更多

单件模式:确保一个类只有一个实例,并提供一个全局访问点。

通过该模式的定义我们可以自己构想出这么一个类。这种模式存在有什么意义呢?根据实际情况如果有需要自然就会使用。比全局静态的好处是,可以延迟实例化的时间,当真正有需要用到的时候才创建。

如何确保一个类只有一个实例,在其他地方不能随便的new一个对象,我的话会联想到工厂方法,但是工厂方法中我们还是可以new一个产品的。如何来限制呢?就是把构造函数设成私有的。无法调用构造函数如何去获得一个实例呢?是没办法的,那谁能调用一个私有的构造函数呢,就是类自己了,所以类中提供一个方法来让外部获得实例。

代码如下:

public class Singleton{

private static Singleton instance;

private Singleton(){ }

public static Singleton getInstance(){

if(instance == null){

instance = new Singleton();

}

return instance;

}

}

这个代码没有实现同步的功能,在多线程的情况下可能会出现两个实例。

有几种解决方法。

1.同步该方法。

public class Singleton{

private static Singleton instance ;

private Singleton(){ }

public static Synchronized Singleton getInstance(){

if(instance == null){

instance = new Singleton();

}

return instance;

}

}

同步会导致性能下降,并且会出现两个实例的情况只有instance= null的时候。

2.让instance 一开始就!=null

public class Singleton{

private static Singleton instance = new Singleton() ;

private Singleton(){ }

public static Synchronized Singleton getInstance(){

return instance;

}

}

3.只在第一次的时候同步。

public class Singleton{

private volatile static Singleton instance ;

private Singleton(){ }

public static Singleton getInstance(){

if(instance == null){

synchronized(Singleton.class);

if(instance == null){

instance = new Singleton();

}

}

return instance;

}

}

其中volatile关键字是被设计用来修饰被不同线程访问和修改的变量。


注,3需要java5版本以上




分享到:
评论

相关推荐

    设计模式 单件模式 设计模式 单件模式

    "设计模式-单件模式" 单件模式是指确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享的程序设计方法。单件模式是一种非常实用的设计模式,它可以控制一个类的实例数量,使得调用者可以从...

    设计模式_--_工厂模式和单件模式

    ### 设计模式——工厂模式与单例模式 #### 一、引言 设计模式是软件工程领域中的一个重要概念,它代表了在特定情况下解决常见问题的最佳实践。在本篇文章中,我们将深入探讨两种广泛使用的软件设计模式:工厂模式...

    设计模式 之 单件模式

    单件模式(Singleton Pattern)是设计模式中的一种,它的核心意图是确保一个类只有一个实例,并提供一个全局访问点。在软件工程中,这样的设计模式能够有效地控制资源的使用,限制实例的数量,以及协调对象间的交互...

    深入浅出设计模式之单件模式

    ### 深入浅出设计模式之单件模式 #### 一、单件模式概述 单件模式(Singleton Pattern)是软件设计模式中最为常见的一种,它的主要目标是确保某个类只有一个实例,并提供一个全局访问点。单件模式在很多情况下都...

    数据库连接-单件模式

    数据库连接的单例模式是一种设计模式,它在软件工程中被广泛应用,特别是在处理数据库连接时。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这样可以避免频繁创建和销毁数据库...

    设计模式之单件模式

    这份文档以例子的形式讲诉了设计模式之单件模式,希望可以帮助学习的人!

    设计模式\单件模式VS2005

    单件模式(Singleton Pattern)是软件设计模式中的一种经典模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,比如配置管理、线程池、数据库连接等需要全局唯一的...

    C#设计模式,单件模式,C#代码

    C#作为.NET框架的主要编程语言,广泛应用于各种复杂系统开发,其中单件模式(Singleton Pattern)是C#开发者经常会遇到的一种设计模式。本资源旨在帮助初学者理解并应用单件模式,通过关键代码实例,让你快速掌握这...

    [创建型模式] head first 设计模式之单件模式(Singleton)

    **单例模式(Singleton)**是软件设计模式中的一种创建型模式...阅读这本书籍可以帮助开发者更好地理解和运用设计模式,提高代码质量和可维护性。在阅读过程中,结合示例代码进行实践,将更有利于掌握这些模式的精髓。

    单件模式试做--static的使用

    单件模式(Singleton Pattern)是设计模式中的一种结构型模式,它的主要目的是保证一个类只有一个实例,并提供一个全局访问点。这种模式常用于系统中需要频繁创建和销毁的对象,例如日志服务、线程池、数据库连接等...

    C#面向对象设计模式纵横谈-1.Singleton 单件(创建型模式)

    在C#编程中,面向对象设计模式是一种组织代码和解决常见设计问题的模板。Singleton模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个唯一的实例。这种模式在需要控制资源的唯一...

    opencv单件设计模式

    在编程中,设计模式是一种在特定情境下解决常见问题的标准化解决方案,其中“单件(Singleton)”设计模式是被广泛应用的一种。单件模式确保一个类只有一个实例,并提供一个全局访问点,这样在整个程序中可以统一...

    基于C#的设计模式中的单件模式

    单件模式(Singleton Pattern)是软件设计模式中的一种基础模式,它确保一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式的实现有多种方式,包括懒汉式、饿汉式以及线程安全的实现。下面我们将详细讨论...

    Head First 设计模式 (五) 单件模式(Singleton pattern) C++实现

    单件模式(Singleton pattern)是设计模式中的一种结构型模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式常用于系统中需要频繁创建和销毁的对象,如日志服务、线程池或者数据库连接等...

    设计模式:可复用面向对象软件的基础--详细书签版

    1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 1.6.6 关联...

    设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式

    设计模式之我见(1):设计模式概述 (100%) 设计模式面面观(2):设计模式基本要素与原则 (100%) 设计模式面面观(3):单件模式(Singletion)-创建型模式 (100%) 设计模式面面观(4):工厂模式...

    设计模式复习题.doc

    - 通过阅读设计模式相关的书籍和文章来学习 - 通过与他人讨论和分享设计模式相关的经验来学习 以上是根据给定文件生成的相关知识点,涵盖了设计模式的种类、基本要素、应用场景、设计原则、实现方式、优点、应用...

    C#视频-面向对象设计模式纵横谈(2):Singleton 单件(创建型模式)

    C#视频-面向对象设计模式纵横谈(2):Singleton 单件(创建型模式)

Global site tag (gtag.js) - Google Analytics