一. 單例: 確保一個類只有一個實例,并且提供一個全局訪問點
二. 單例模式的類中, 要有私有的構造器,一個靜態方法和一個靜態變量
三.示例如下:
1. 經典的單例模式
package creationalPattern.singleton.singleton_1; /** * 單例模式(延遲創建) * @author Liyongbin * @adte 2011-02-06 * */ public class Singleton { //私有類成員(保存類的唯一實例) private static Singleton uniqueInstance; //私有構造器(只有Singleton類內才可以調用構造器) private Singleton(){}; //全局訪問點(用getInstance()方法實例化對象,并返回實例) public static Singleton getInstance(){ if (null==uniqueInstance) { uniqueInstance=new Singleton(); } return uniqueInstance; } }
注意: 此經典的單例實現,不適用于多線程環境;
2. 使用同步方法,解決單例的多線程問題
package creationalPattern.singleton.singleton_2; /** * 單例模式(延遲創建)_支持多線程(使用同步方法) * @author Liyongbin * @adte 2011-02-06 * */ public class Singleton { //私有類成員 private static Singleton uniqueInstance; //私有構造器 private Singleton(){}; //全局訪問點 public static synchronized Singleton getInstance(){ if (null==uniqueInstance) { uniqueInstance=new Singleton(); } return uniqueInstance; } }
注意: 如果你總是頻繁地創建(getInstance()) 單例的話,以上方法就不適用了,可以採取以下方法;
3. 非延遲單例模式
package creationalPattern.singleton.singleton_3; /** * 單例模式(非延遲(eagerly)創建) * @author Liyongbin * @adte 2011-02-06 * */ public class Singleton { //私有的類成員 private static Singleton uniqueInstance=new Singleton(); //私有的構造器 private Singleton(){}; //全局的訪問點 public static Singleton getInstance(){ return uniqueInstance; } }
4. 使用雙重檢查來確保單例的安全,高效運行
package creationalPattern.singleton.singleton_4; /** * 單例模式((非延遲(eagerly)創建)使用雙重检查機制--volatile * 優化性能,大大地減少getInstance()時間耗費 * @author Liyongbin * @adte 2011-02-06 */ public class Singleton { //私有的類成員 private volatile static Singleton uniqueInstance; //私有的構造器 private Singleton(){}; //全局的訪問點 //检查实例,不存,就進入同步塊 public static Singleton getInstance(){ //只有第一次才徹底執行這里的代碼 if (null==uniqueInstance) { synchronized (Singleton.class){ //進入同步塊后,再檢查一次,為null才創建實例 if (null==uniqueInstance) { uniqueInstance=new Singleton(); } } } return uniqueInstance; } } 注:此方法僅適用于JDK1.4或更高的版本
相关推荐
根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...
Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...
单例模式(Singleton Pattern)是一种常用的软件设计模式,它保证一个类仅有一个实例,并提供一个访问该实例的全局访问点。这种模式通常用于需要频繁地创建和销毁的对象,以减少系统性能开销。 单例模式的优点: ...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,有以下特点: 1. 单例类只能有一个实例。 2. 单例类必须自己创建自己的唯一实例。 3. 单例类必须给所有其他对象提供这一实例。 单例模式有多种实现...
单例模式(Singleton Pattern)是一种常用的软件设计模式,在系统中确保某个类只有一个实例,并提供一个全局访问点。这种模式通常用于控制资源的消耗,比如数据库连接、线程池等,以及确保某个系统配置的一致性。 #...
总结来说,"JAVA design pattern-java设计模式"的CHM文件是深入学习和理解Java设计模式的宝贵资源,通过学习和应用这些模式,开发者可以提高其代码质量,优化系统架构,从而更好地应对复杂的软件开发挑战。
在Java编程中,单例模式是一种常用的创建型设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。本主题探讨的是线程安全的单例模式实现,特别是饥饿模式(Starvation)和延迟加载(Lazy Initialization)...
单例模式是一种常见的设计模式,属于创建型模式之一。这种模式的核心在于确保某个类只有一个实例存在,并且提供一个全局访问点来获取该实例。单例模式在Java开发中尤其常见,因为它能够帮助开发者控制对象的创建过程...
工厂三兄弟之抽象工厂模式(二) 工厂三兄弟之抽象工厂模式(三) 工厂三兄弟之抽象工厂模式(四) 工厂三兄弟之抽象工厂模式(五) 单例模式-Singleton Pattern 确保对象的唯一性——单例模式 (一) 确保对象的...
单例模式是软件设计模式中的一种,属于创建型模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,例如管理共享资源、配置对象或者缓存服务等。 单例模式的核心...
单例模式是软件设计模式中的一种经典模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制共享资源、管理系统级别的服务或者简化对象间的交互。以下是对单例模式的详细...
在本设计模式课程设计中,我们重点探讨了五个核心的设计模式:原型模式、单例模式、抽象工厂模式、代理模式和建造者模式。这些模式在Java编程中具有广泛的应用,能够帮助开发者创建更加灵活、可扩展和易于维护的代码...
**单例模式(Singleton Pattern)**是软件设计模式中的一种基础模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,比如配置管理、线程池、数据库连接池等,这些都...
单例模式是Java中最基础也是最常用的设计模式之一,它帮助我们有效地管理程序中的共享资源。无论是简单的饿汉式还是复杂的懒汉式,开发者可以根据具体的应用场景选择最适合的方式实现。随着并发编程的需求日益增加,...
《Java设计模式实战详解》 在Java编程领域,设计模式是一种通用、可重用的解决方案,用于解决在软件设计中常见的问题。这个压缩包“java-design-patterns-master”显然是一个专注于Java设计模式的学习资源,旨在...
Java设计模式之单例模式详解 一、单例模式概览 单例模式(Singleton Pattern)是面向对象设计模式中的一种,属于创建型模式。它确保一个类仅有一个实例,并提供一个全局访问点来访问该实例。单例模式的核心在于控制...
单例模式是软件开发中常用的设计模式之一,用于确保一个类只有一个实例,并提供一个全局访问点。Java中实现单例模式的方法有很多种,每种方法都有其适用场景和优缺点。选择合适的实现方式需要根据实际需求和应用场景...
### JAVA设计模式中的单例模式解析 在软件工程与编程领域,设计模式是解决特定问题的一套被广泛接受的解决方案。其中,单例模式(Singleton Pattern)是一种常用的创建型模式,其核心在于确保一个类只有一个实例,...
### Java设计模式详解 在软件开发领域,设计模式是一种被广泛采用的解决方案,用来解决常见的设计问题。设计模式不仅能够帮助开发者写出可复用、可维护的代码,还能提高团队间的沟通效率。以下是对给定文件中提到的...