随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

操作系统中存在多种单例设计的实例,如:Windows系统的回收站,不论是桌面打开还是在文件夹中打开,都是打开的同一个回收站。

说明回收站这个对象就是单例实例。

 

 第一种单例设计:(饿汉式)

package Demo_1_25_单例设计;

// 单例类
// 要求主类中只能有一个实例化对象:
// 在所需要的实例化类中实现定义一个本类对象属性,并将名称引用设置为static,final的常量
public class Singleton {
    private static final Singleton SINGLETON = new Singleton();  // 设置为属性,然后封装
    private Singleton() {}  // 构造方法私有化,外部无法调用构造方法,也就是无法从其它类产生实例化对象

    public static Singleton getSINGLETON() {    // 必须设置getter方法,因为属性被private所限制,所以即使是static修饰,也无法从外部类使用 类名. 的形式调用
        return SINGLETON;
    }

    public void print() {
        System.out.println("www");
    }
}

  

 

第二种单例设计:(懒汉式)(需要考虑线程同步)

package Demo_1_25_单例设计;

// 单例类
// 要求主类中只能有一个实例化对象:
// 在所需要的实例化类中实现定义一个本类对象属性,并将名称引用设置为static,final的常量
public class Singleton {
    private static Singleton singleton = new Singleton();  // 设置为属性,然后封装
    private Singleton() {}  // 构造方法私有化,外部无法调用构造方法,也就是无法产生实例化对象

    public static Singleton getSingleton() {        // 必须设置getter方法,因为属性被private所限制
        if (singleton == null){    // 只有在第一次才创建,其后对象都不为空
            singleton = new Singleton();
        }
        return singleton;
    }

    public void print() {
        System.out.println("www");
    }
}

 

 

package Demo_1_25_单例设计;

public class Main {
    public static void main(String[] args) {
        Singleton instance = null ; // 声明对象
//        private Singleton() {}  // 构造方法私有化
//        instance = new Singleton(); // 实例化出错
        instance = Singleton.getSINGLETON();
        instance.print();
    }
}

 

posted on 2022-01-25 19:33  时间完全不够用啊  阅读(63)  评论(0编辑  收藏  举报