单例模式
来源:互联网 发布:sql server复制表结构 编辑:程序博客网 时间:2024/05/21 17:13
当一个类的实例可以有且只可以一个的时候就需要用到了。为什么只需要有一个呢?为了节约内存,但这只是单例模式带来的一个好处。只有一个实例确实减少内存占用,这不是使用单例模式的理由。我认为使用单例模式的时机是当实例存在多个会引起程序逻辑错误的时候。比如类似有序的号码生成器这样的东西,怎么可以允许一个应用上存在多个呢?
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有三种形式:
第一种形式:懒汉式,也是常用的形式。
public class SingletonClass{ private static SingletonClass instance=null; public static SingletonClass getInstance() { if(instance==null) { instance=new SingletonClass(); } return instance; } private SingletonClass(){ } }
第二种形式:饿汉式
//对第一行static的一些解释 // java允许我们在一个类里面定义静态类。比如内部类(nested class)。 //把nested class封闭起来的类叫外部类。 //在java中,我们不能用static修饰顶级类(top level class)。 //只有内部类可以为static。 public static class Singleton{ //在自己内部定义自己的一个实例,只供内部调用 private static final Singleton instance = new Singleton(); private Singleton(){ //do something } //这里提供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance(){ return instance; } }
第三种形式: 双重锁的形式。
public static class Singleton{ private static Singleton instance=null; private Singleton(){ //do something } public static Singleton getInstance(){ if(instance==null){ synchronized(Singleton.class){ if(null==instance){ instance=new Singleton(); } } } return instance; } }
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- 背包问题九讲笔记_完全背包
- hdu 4746 Mophues 莫比乌斯反演
- Eclipse安装testng失败,提示MD5值错误
- 原生sql 查clob字段,查出的结果是string类型
- 封装的AlertDialog
- 单例模式
- UITableView - 2
- 今天搞了一个下午,总算是把并查集了解了一点
- [Object-C]使用个推遇到的坑
- Redis
- 写给以后从事金融分析师学员的一些话(附行研经验)
- Spring依赖注入——java项目中使用spring注解方式进行注入
- 食物链(带权并查集)
- 比较差劲的自定义view