Android 设计模式一:单例模式
来源:互联网 发布:路由器无网络怎么回事 编辑:程序博客网 时间:2024/05/17 21:50
*## 单例模式
* 定义:确保某一个类只有一个实例,而且自行实例化并向系统提供这个实例。
* 常用四种实现方式:饿汉式,懒汉式,静态内部类,枚举。
1.饿汉式
public class Singleton{private static fianl Singleton instance = new Singleton();//私有化构造器,避免外部访问。使用反射仍然可以访问,所以安全是相对的。//但仍然可以通过哈希值等进行限制,提高安全性。priavte Singleton(){}//对外暴露的接口,用于获取实例public static Singleton getInstance(){ return instance; }}
优点:能够在线程安全的情况下实现单例。
缺点:由于类一加载就会创建实例,所以会较早占用系统资源。反序列化会重新创建对象。
2.懒汉式
public class Singleton{ private static Singleton instance; priavte Singleton(){ }//加synchronized上锁,可以一定程度上确保安全性public static synchronized Singleton getInstance(){ if(instance == null){ instance = new Singleton(); } return instance; }}
优点:能够实现延迟加载,节约内存。在单线程中能很好工作。
缺点:并发下可能会创建多个实例,每次判断都会耗费一些时间。反序列化会重新创建对象。
3.静态内部类 (最好的单例模式实现)
public class Singleton{priavte Singleton(){}public static Singleton getInstance(){ return SingletonHolder.instance;}//静态内部类确保了在首次调用getInstance()的时候才会初始化SingletonHolder,从而导致实例被创建。//并且由JVM保证了线程的安全。priavte static class SingletonHolder{ priavte static final Singleton instance = new Singleton();}//防止反序列化private Object readResolve() throws ObjectStreamException{ return SingletonHolder.instance; } }
4.枚举
public enum Singleton{INSTANCE;public void doSomething(){ System.out.println("doSomething"); }}
阅读全文
0 0
- Android 设计模式一:单例模式
- Android设计模式之单例模式(一)
- Android 设计模式之(一)单例,代理,外观模式
- Android常见的设计模式一:单例模式
- Android设计模式(一)——单例模式
- Android设计模式(一)-单例模式
- Android源码设计模式(一)-单例模式
- 一、 单例设计模式
- 一 设计模式之单例模式
- 设计模式 一 单例模式Singleton
- 设计模式读书笔记(一)单例模式
- 设计模式一:单例模式
- 设计模式之单例模式 (一)
- 设计模式(一) 单例模式
- 设计模式一:单例模式(续)
- 设计模式一:单例模式
- 设计模式学习(一):单例模式
- 设计模式(一)---单例模式
- Docker 简单总结
- android studio中用git提交到本地的代码怎么撤回?
- 取消myeclipse打开后加载maven
- Elasticsearch试水
- Angular开发(二十七)-补充rxjs的使用
- Android 设计模式一:单例模式
- ajax发送请求,以及动态添加到页面
- C++11 lambda
- 基于Gabor滤波器的图像边缘检测实验
- 【算法】程序猿不写代码是不对的70
- 学习笔记——JAVA设计模式<11>享元模式
- 封装:树形节点的封装
- 使用SQL操作SQLite存储的ST_Geometry
- win7 64位安装redis 及Redis Desktop Manager使用