设计模式--单例模式
2018-09-05 23:14
162 查看
单例模式的意义
有些对象我们只需要一个:线程池、缓存、硬件设备等
如果多个实例会有造成冲突、结果的不一致性等问题
是否可以用静态变量方式来实现?
或者程序员之间协商个全局变量?
单例模式:确保一个类最多只有一个实例,并提供一个全局访问点
单例模式类图:
把构造函数私有化,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方法:频繁情况比较耗资源
“急切”创建实例(饿汉式):在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快
双重检查加锁
相关文章推荐
- 设计模式不能做什么
- ABAP与设计模式之策略模式
- 设计模式之四 --- 建造(Builder)模式
- 设计模式
- 设计模式总览
- 设计模式之装饰模式
- Java23中设计模式一:单例模式
- 设计模式----代理模式(Proxy)
- 面向对象原则的要点知识与设计模式
- 【CDP-云设计模式】第3章,2.多数据中心模式(Multi-Datacenter Pattern)
- 设计模式中类的关系
- 一天一个设计模式---享元模式
- 代理模式设计只能内网访问线上数据库
- Design Patterns: Singleton Basics 设计模式游戏中运用:单例基础
- java设计模式 -------- 创建模式 之 单例模式
- 转载-Flash中oop的设计模式
- 《企业集成模式.设计、构建及部署消息传递解决方案》学习笔记
- Java常用的23种设计模式
- 小鸦之设计模式(3) - 责任链模式 Chain-of-responsibility pattern
- 设计模式之代理模式(二结构型)