欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > asp.net >内容正文

asp.net

java单例设计模式

发布时间:2025/5/22 asp.net 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java单例设计模式 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

单例模式的概念

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

单例设计模式主要分为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;} }

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

好处是消耗系统资源少。

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

 

转载于:https://www.cnblogs.com/xjx199403/p/10764281.html

总结

以上是生活随笔为你收集整理的java单例设计模式的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。