博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式--单例模式
阅读量:4694 次
发布时间:2019-06-09

本文共 729 字,大约阅读时间需要 2 分钟。

单例模式的意义

有些对象我们只需要一个:线程池、缓存、硬件设备等

如果多个实例会有造成冲突、结果的不一致性等问题

是否可以用静态变量方式来实现?

或者程序员之间协商个全局变量?

 

单例模式:确保一个类最多只有一个实例,并提供一个全局访问点 

单例模式类图:

把构造函数私有化,getInstance中判断uniqueInstance是否已经实例化,若已经实例化直接返回,否则实例化后返回

代码演示:

package com.java.jikexueyuan.singleton;public class Singleton {        private static Singleton uniqeInstance=null;        private Singleton(){            };        public static Singleton getInstance()    {        if(uniqeInstance==null)        {            uniqeInstance=new Singleton();        }        return uniqeInstance;            }}

单例模式的优化

多线程问题

  可能会出现创建多个实例的情况

 

优化:

  同步(synchronized)getInstance方法:频繁情况比较耗资源

  “急切”创建实例(饿汉式):在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快

双重检查加锁

  

 

转载于:https://www.cnblogs.com/lm970585581/p/9595499.html

你可能感兴趣的文章
Ubuntu 编译 ARM-Linux-Gcc 工具链 -- 编译过程
查看>>
java url生成二维码保存到本地
查看>>
python platform模块
查看>>
Nginx
查看>>
leetcode133 - Clone Graph - medium
查看>>
Mybatis(一)入门
查看>>
DDR工作原理(转)
查看>>
(Frontend Newbie) Web三要素(一)
查看>>
(转载-学习)python wsgi 简介
查看>>
QPushButton 控制两种状态
查看>>
一点小基础
查看>>
PHP 自动加载类 __autoload() 方法
查看>>
JDK中的Timer和TimerTask详解(zhuan)
查看>>
【python练习】ATM&购物商城程序
查看>>
nginx 日志问题(\x22)
查看>>
装饰器、迭代器、生成器
查看>>
学密码学一定得学程序(SDUT 2463)
查看>>
java:jsp: 一个简单的自定义标签 tld
查看>>
position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
查看>>
food(洛谷P4040 [AHOI2014/JSOI2014]宅男计划)
查看>>