码迷,mamicode.com
首页 > 编程语言 > 详细

java单例设计模式

时间:2019-04-24 19:09:59      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:bean   静态方法   初始   public   设计模式   ati   spring   static   on()   

单例模式的概念

单例类只有一个实例,并且只由自己创建,实例化后向整个系统提供自己的实例。

单例设计模式主要分为2种:懒汉式和饿汉式。2者的区别在于初始化的时间不同。

像线程池,缓存,日志等都被设计成单例模式;spring中所有的bean不设置作用域的话,默认都是单例模式。

这些单例类大多都是具有管理资源的用途。

 

饿汉式单例模式的实现

饿汉式单例模式在定义类的时候被实例化。

public class Singleton1 {

    private Singleton1() {}

    private static final Singleton1 single = new Singleton1();

    //静态工厂方法

    public static Singleton1 getInstance() {

        return single;

    }

}

1.构造方法私有化,防止被外部实例化(虽然通过反射还是可以创建);

2.内部声明私有变量并实例化;

3.为外部提供访问该实例的静态方法。

 

 

懒汉式单例模式的实现

懒汉式单例模式在调用方法的时候才实例化。

public class Singleton {
    private Singleton() {}
    private static Singleton single=null;
    //静态工厂方法 这里加上同步锁,让这个方法不会同时被多个线程访问
    public static Singleton getInstance() {
         if (single == null) {  
             single = new Singleton();
         }  
        return single;
    }
}

懒汉式的实现与之前的基本相同,只是实例化放在了方法内。

好处是消耗系统资源少。

坏处是它并不是同步的,如果在多线程下,可能被创建多个实例。因此在上面可以为方法加锁,保证同步。

 

java单例设计模式

标签:bean   静态方法   初始   public   设计模式   ati   spring   static   on()   

原文地址:https://www.cnblogs.com/xjx199403/p/10764281.html

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