浅谈JAVA设计模式之——单例模式(Singleton)
2015-05-02 17:50
477 查看
转载请注明出处:/article/8380667.html
一、概述
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
Test
Result
附加:
1、饱汉模式
2、饿汉模式
3、内部类模式
一、概述
保证一个类仅有一个实例,并提供一个访问它的全局访问点。二、适用性
1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
三、参与者
Singleton 定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类操作。 可能负责创建它自己的唯一实例。四、类图
五、示例
Singletonpackage com.lyz.design.singleton; /** * 创建单例对象的类 * @author liuyazhuang * */ public class Singleton { /** * 声明一个静态Singleton类变量 */ private static Singleton sing; /** * 构造方法私有化 */ private Singleton() {} /** * 创建单例对象 * @return */ public static Singleton getInstance() { if (sing == null) { synchronized (Singleton.class) { if(sing == null){ sing = new Singleton(); } } } return sing; } }
Test
package com.lyz.design.singleton; /** * 测试类 * @author liuyazhuang * */ public class Test { public static void main(String[] args) { Singleton sing = Singleton.getInstance(); Singleton sing2 = Singleton.getInstance(); System.out.println(sing); System.out.println(sing2); } }
Result
com.lyz.design.singleton.Singleton@11f46b16 com.lyz.design.singleton.Singleton@11f46b16
附加:
1、饱汉模式
package com.cdsmartlink.tea.single; /** * 饱汉模式 * @author liuyazhuang * */ public class Singleton { private Singleton(){ System.out.println("Singleton is create"); } private static Singleton instance = new Singleton(); public static Singleton getInstance(){ return instance; } }
2、饿汉模式
package com.cdsmartlink.tea.single; /** * 饿汉模式 * @author liuyazhuang * */ public class LazySingleton { private LazySingleton(){ System.out.println("LazySingleton is create"); } private static LazySingleton instance; public static LazySingleton getInstance(){ if(instance == null){ synchronized (LazySingleton.class) { if(instance == null){ instance = new LazySingleton(); } } } return instance; } }
3、内部类模式
package com.cdsmartlink.tea.single; /** * 内部类模式 * @author liuyazhuang * */ public class StaticSingleton { private StaticSingleton(){ System.out.println("StaticSingleton is create"); } private static class SingletonHodler{ private static StaticSingleton instance = new StaticSingleton(); } public static StaticSingleton getInstance(){ return SingletonHodler.instance; } }
相关文章推荐
- 浅谈Java设计模式(三)单例模式(Singleton)
- JAVA设计模式之三单例模式(Singleton)
- JAVA设计模式之三单例模式(Singleton)
- JAVA设计模式(单例模式Singleton)
- 浅谈Java设计模式之策略模式
- 浅谈java 设计模式——原型模式
- 浅谈Java设计模式—-装饰模式
- 在 Java 中应用设计模式 -- Singleton
- Java设计模式之单例模式(Singleton)
- Java常用设计模式之单例模式(Singleton)
- 浅谈JAVA设计模式之——工厂方法(FactoryMethod)
- Java设计模式透析之 —— 单例(Singleton)
- Java设计模式之 —— 单例(Singleton)
- JAVA设计模式一:---Singleton(单例模式)
- java设计模式之创建模式--singleton (demo)
- Java-设计模式-单例模式浅谈
- 设计模式:单例模式(Singleton) java实现及实现方式对比
- Java设计模式透析之 —— 单例(Singleton)
- java设计模式---浅谈2种工厂模式和单例模式
- Java设计模式之从[反恐精英控制台]分析单例(Singleton)模式