码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之单例模式(singleton)

时间:2014-08-13 12:30:06      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   java   使用   os   文件   

1、定义

确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例

2、通用类图

bubuko.com,布布扣

Singleton类称为单例类,通过使用private的构造函数确保了在一个应用中只产生一个实例,并且是自行实例化的(在Singleton中自己使用new Singleton())。通用源码如下所示:

饿汉模式:

package singleton;

public class Singleton {
    private static final Singleton singleton=new Singleton();
    
    //限制产生多个对象
    private Singleton(){
    }
    //通过该方法获得实例对象
    public static Singleton getSingleton(){
        return singleton;
    }
    //类中其他方法,尽量使用static
    public static void doSomething(){
    }
}

懒汉模式:

package singleton;

public class Singleton1 {
    private static Singleton1 singleton=null;
    
    //限制产生多个对象
    private Singleton1(){
    }
    //通过该方法获得实例对象
    public static synchronized Singleton1 getSingleton(){
        if(singleton==null){
            singleton=new Singleton1();
        }
        return singleton;
    }
}

4、最佳实践

     一般是管理全局的,共享的资源

1、在spring中每个bean默认都是单例的。但是可以设置成非单例模式

2、数据库连接

3、线程池

4、设置网站访问计数器,可以使用单例模式。如果我们一个单例对象在内存中长久不用,JVM就任务这个对象是一个垃圾,在CPU资源空闲的情况下该对象会被清理掉,下次再调用时就需要重新产生一个对象。计数器可能有出现恢复原状的情况,应用就会出现故障。解决方式:(在java1.2版本后已经改掉了)bubuko.com,布布扣

  • 由容器管理单例的生命周期,javaEE容器或者框架级容器(Spring)可以让对象长久驻留内存。
  • 状态随时记录,可以使用异步记录方式,或者使用观察者模式,记录状态的改变,写入文件或数据库。确保即使单例对象重新初始化也可以从资源环境获得销毁前的数据,避免应用数据丢失。

设计模式之单例模式(singleton),布布扣,bubuko.com

设计模式之单例模式(singleton)

标签:style   blog   http   color   java   使用   os   文件   

原文地址:http://www.cnblogs.com/limiracle/p/3909444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!