JAVA设计模式之单例模式
来源:互联网 发布:淘宝商城男鞋运动鞋 编辑:程序博客网 时间:2024/05/17 21:39
什么是单例模式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
单例模式使用场景
有一些对象我们只需要一个,如:线程池、缓存、对话框、处理偏好设置、注册表的对象、日志对象、相机等。实际上,这类对象只能有一个实例,如果制造出多个实例,就会导致许多问题产生。
设计步骤
- 三个步骤
1.构造器设置为私有的,这样外部就不能创建其对象2.声明一个私有静态的对象3.创建公开的静态方法返回该对象给外部
- 类图
设计方法与实例分析
- 两种单例模式
懒汉式-使用时才创建对象
饿汉式-声明时就创建好对象
- 懒汉式
方式1:不使用多线程时可用
class Camera { private static Camera mCamera = null; private Camera() {} public static Camera getInstance() { if (mCamera == null) { //如果使用了多线程,此处仍然有可能导致创建多个对象 mCamera = new Camera(); } return mCamera; }}
方式2:使用了多线程时可用,但效率会降低100倍
class Camera { private static Camera mCamera = null; private Camera() {} public synchronized static Camera getInstance() { if (mCamera == null) { mCamera = new Camera(); } return mCamera; }}
方式3:双重检查加锁,方式2的改进版,可以提高效率
class Camera { private volatile static Camera mCamera = null; private Camera() {} public static Camera getInstance() { if (mCamera == null) { synchronized (Camera.class) { if (mCamera == null) { mCamera = new Camera(); } } } return mCamera; }}
- 饿汉式
class Camera { private static Camera mCamera = new Camera(); private Camera() {} public static Camera getInstance() { return mCamera; }}
在安卓中的使用
设计模式常常被用在框架设计中,因此安卓framework中使用了多种模式,单例模式随处可见
0 0
- java设计模式之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- java设计模式之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java模式设计之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- 语义分析的一些方法(中篇)
- Java-判断页面过来的请求方式
- 将数组作为函数的参数的方法
- mantis使用案例
- Reactor 和 proactor 的区别
- JAVA设计模式之单例模式
- Codeforces 582B Once Again...
- android 电容屏(二):驱动调试之基本概念篇
- RMI的概念
- 解决VM克隆CentOS系统后eth0消失,显示eth1的问题
- FPGA Verilog语言实现数字钟
- coreseek 使用技巧
- LSP(分层服务提供者)
- [JQ权威指南]第十八天:使用show()与hide()方法动画显示和隐藏图片