作者:mobiledu2502862343 | 来源:互联网 | 2023-09-02 18:23
单例模式是设计模式中比较简单的一种。适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,它们都是原型的例子。典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个
单例模式是设计模式中比较简单的一种。适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,
它们都是原型的例子。典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问
指针,这便是众所周知的单例模式的应用。
经典的单例模式有三种,懒汉式、饿汉式和懒汉式单例模式改进式
“懒汉式”是在你真正用到的时候才去建这个单例对象,所以是线程不安全的
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的。
![](https://www.#.com/go/aHR0cHM6Ly9pbWFnZXMyMDE3LmNuYmxvZ3MuY29tL2Jsb2cvMTIxNjg2Mi8yMDE3MDgvMTIxNjg2Mi0yMDE3MDgyOTE5NDAwNzM1OC0yMDgwODA1NTM2LnBuZw==)
测试懒汉式的函数
![](https://www.#.com/go/aHR0cHM6Ly9pbWFnZXMyMDE3LmNuYmxvZ3MuY29tL2Jsb2cvMTIxNjg2Mi8yMDE3MDgvMTIxNjg2Mi0yMDE3MDgyOTE5NDA1NTI4MC0xMDcxOTc4ODg1LnBuZw==)
![](https://www.#.com/go/aHR0cHM6Ly9pbWFnZXMyMDE3LmNuYmxvZ3MuY29tL2Jsb2cvMTIxNjg2Mi8yMDE3MDgvMTIxNjg2Mi0yMDE3MDgyOTE5NDEyNzU3Ny03NTY1OTE4MjkucG5n)
测试结果
![](https://www.#.com/go/aHR0cHM6Ly9pbWFnZXMyMDE3LmNuYmxvZ3MuY29tL2Jsb2cvMTIxNjg2Mi8yMDE3MDgvMTIxNjg2Mi0yMDE3MDgyOTE5NDE0MjU3Ny04ODg5NDU4NTMucG5n)
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变。
![](https://www.#.com/go/aHR0cHM6Ly9pbWFnZXMyMDE3LmNuYmxvZ3MuY29tL2Jsb2cvMTIxNjg2Mi8yMDE3MDgvMTIxNjg2Mi0yMDE3MDgyOTE5NDQ0ODk2OC0xMjQyMDA5NDEucG5n)
![](https://www.#.com/go/aHR0cHM6Ly9pbWFnZXMyMDE3LmNuYmxvZ3MuY29tL2Jsb2cvMTIxNjg2Mi8yMDE3MDgvMTIxNjg2Mi0yMDE3MDgyOTE5NDUxMDQ4My03NDA4NTA5MzkucG5n)
懒汉式的改进
![](https://www.#.com/go/aHR0cHM6Ly9pbWFnZXMyMDE3LmNuYmxvZ3MuY29tL2Jsb2cvMTIxNjg2Mi8yMDE3MDgvMTIxNjg2Mi0yMDE3MDgyOTE5NDU1NjkwNS0yMDMzMDI0NzkyLnBuZw==)
运用静态内部类的方式,在类被调用的时候才会产生对象