一. 單例: 確保一個類只有一個實例,并且提供一個全局訪問點
二. 單例模式的類中, 要有私有的構造器,一個靜態方法和一個靜態變量
三.示例如下:
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或更高的版本
相关推荐
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...
工厂三兄弟之抽象工厂模式(二) 工厂三兄弟之抽象工厂模式(三) 工厂三兄弟之抽象工厂模式(四) 工厂三兄弟之抽象工厂模式(五) 单例模式-Singleton Pattern 确保对象的唯一性——单例模式 (一) 确保对象的...
单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 2 结构型模式 这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 适配器...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 学习demo
单例模式(Singleton Pattern)是 Java 中最常见的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
Java高手真经 - Java Web系统设计与架构 源代码(一)设计模式 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1...
在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在源码中的使用,每种设计模式都举了一个简单的小例子来进行实现,并加以注释 包名解释 一、DesignPattern 1.1 创建型模式 ...
用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...
3、单例模式SINGLETON PATTERN 4、多例模式MULTITION PATTERN 5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板...
design-pattern-test 设计模式学习练习 模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns) 序号 模式&描述 包括 1 创建型模式---...
1. 设计模式 1.1 含义 1.2 作用 1.3 设计原则 1.4 分类 2. 简单工厂模式 (SimpleFactoryPattern) 3. 工厂方法模式 (Factory Method) 4. 单例模式 (Singleton) 5. 抽象工厂模式 (Abstract Factory) 6. ...
单例模式【SINGLETON PATTERN】 多例模式【MULTITION PATTERN】 工厂方法模式【FACTORY METHOD PATTERN】 抽象工厂模式【ABSTRACT FACTORY PATTERN】 门面模式【FACADE PATTERN】 适配器模式...
23种设计模式演示代码文件结构图gof23 |- creational(创建型模式) |- simplefactory 简单工厂模式案例 |- factorymethod 工厂方法模式案例 |- abstractfactory 抽象工厂模式案例 |- builder 建造者模式案例 |- ...
基于观察者模式和单例模式的java聊天室 面向对象设计,抽象,封装,代理,组合和继承 适合理解java面向对象,socket编程,观察者模式和单例模式
一个单例模式的晋级过程(饿汉-懒汉-DCL-IoDH-枚举) ...单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一
Java设计模式书籍: 大话设计模式 Head First 设计模式 设计模式的类型: 总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、 行为型模式...
通过对配置文件进行读写的例子,演示了如何应用单例模式来设计类及其之间的关系。
Java据说有23种设计模式,Android的设计模式肯定是由Java来引申出来的。这里不讨论有多少人全会,有多少种设计模式会使用到,我们来讲下其中用得最多的也就是人人都知道的单例模式。 这里是一个简单的Singleton...
1.单例模式(Singleton Pattern) 2.工厂模式 3.抽象工厂模式(Abstract Factory 4.模板方法模式(Template Met
家庭作业的主题: HW01: PART1->策略设计模式PART2->观察者设计模式PART3->装饰器设计模式HW02: PART1->单例设计模式PART2->迭代器设计模式PART3->状态和观察者模式PART4->代理设计模式中期: PART1->抽象工厂...