java中常用的设计模式-单例模式
2017-03-16 21:12
453 查看
总结一下最近几天学的java设计模式。
单例模式,只生成一个实例的类。
由于要求只能生成一个实例,因此我们必须把构造函数设为私有函数,以防止他人创建实例。
我们可以定义一个静态的实例,在需要的时候创建该实例。
1、单例模式
保证一个类只有一个实例,并且提供一个访问它的全局的访问点。
此种是单线程单例的经典写法。
第二种,多线程时的单例
使用synchronized关键字,加同步锁,一种是给静态方法getInstance加锁,但是给整个方法加锁,效率不高。
加锁是一个非常耗时的操作,在没有必要的时候,我们应该尽量避免。
双重检查模式,比较经典的多线程单例模式,
单例模式,只生成一个实例的类。
由于要求只能生成一个实例,因此我们必须把构造函数设为私有函数,以防止他人创建实例。
我们可以定义一个静态的实例,在需要的时候创建该实例。
1、单例模式
保证一个类只有一个实例,并且提供一个访问它的全局的访问点。
public class Singleton { private Singleton(){} private static Singleton instance=null; public static Singleton getInstance(){ if(instance==null){ instance=new Singleton(); } return instance; } }
此种是单线程单例的经典写法。
第二种,多线程时的单例
使用synchronized关键字,加同步锁,一种是给静态方法getInstance加锁,但是给整个方法加锁,效率不高。
加锁是一个非常耗时的操作,在没有必要的时候,我们应该尽量避免。
public class Singleton { private Singleton(){} private static Singleton instance=null; public static synchronized Singleton getInstance(){ if(instance==null){ instance=new Singleton(); } return instance; } }
双重检查模式,比较经典的多线程单例模式,
public class Singleton { private Singleton(){} private static Singleton instance=null; public static Singleton getInstance(){ if(instance==null){ synchronized(Singleton.class){ if(instance==null){ instance=new Singleton(); } } } return instance; } }
相关文章推荐
- java常用设计模式应用案例
- java常用设计模式(装饰者模式)
- Java设计模式16:常用设计模式之观察者模式(行为型模式)
- java常用设计模式
- Java常用设计模式
- Java常用的设计模式
- java几种常用设计模式简单示例
- 常用Java设计模式系列(4)- 适配器模式
- java 常用设计模式-策略模式(strategy)
- 黑马程序员_java基础复习之十常用设计模式总结
- java常用设计模式总结
- java常用设计模式文章收集
- Java常用的设计模式
- Java常用的设计模式:适配器模式
- JAVA中常用设计模式 分析详解
- Java 常用设计模式-代理模式Proxy
- Java常用的设计模式
- java开发常用的23中设计模式
- Java常用类库--观察者设计模式( Observable类Observer接口)
- Java常用的设计模式11:常用设计模式之代理模式(结构型模式)