加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 单例模式、枚举

发布时间:2020-12-15 05:35:13 所属栏目:Java 来源:网络整理
导读:单例模式 1、在当前系统中,某个类型的对象,最多只能有一个,就需要使用单例设计模式 2、几种格式 // 老汉式 class WeekDay1{ // 1.构造方法私有化 private WeekDay1() {} // 2.创建静态常量对象 public static final WeekDay1 MON = new WeekDay1();} //

单例模式

1、在当前系统中,某个类型的对象,最多只能有一个,就需要使用单例设计模式

2、几种格式

//老汉式
class WeekDay1{
    //1.构造方法私有化
    private WeekDay1() {}
    //2.创建静态常量对象
    public static final WeekDay1 MON = new WeekDay1();
}
//饿汉式
class WeekDay2{
    //1.构造方法私有化
    private WeekDay2() {}
    //2.创建本类静态私有对象
    private static WeekDay2 Mon = new WeekDay2();
    //3.对外提供私有对象的访问
    public static WeekDay2 getInstance() {
        return Mon;
    }
}
//懒汉式
class WeekDay3
{
    //1.构造方法私有化
    private WeekDay3(){}
    //2.声明本类私有对象
    private static WeekDay3 Mon;
    //3.判断并创建对象
    public static WeekDay3 getInstance(){
        if(Mon==null){
            Mon = new WeekDay3();
        }
        return Mon;
    }
}

3、问题:单例模式会不会产生线程安全问题?如何解决?会不会影响效率?如何提升效率?

  单例模式的懒汉式会产生线程安全问题,可以使用同步代码块解决,效率问题看下面代码

class WeekDay3
{
    //1.构造方法私有化
    private WeekDay3(){}
    //2.声明本类私有对象
    private static WeekDay3 Mon;
    //3.判断并创建对象
    public static WeekDay3 getInstance(){
        //因为只有第一次才会判断,所以再判断一次可以提高效率
        if(Mon==null) {
            //加同步代码块可以解决线程不安全的问题,但效率会变低
            synchronized (WeekDay3.class) {
                if(Mon==null){
                    Mon = new WeekDay3();
                }
            }
        }
        return Mon;
    }
}

枚举

1、什么是枚举?

  描述对象个数有限的类

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读