Android源码设计模式(一)-单例模式
来源:互联网 发布:淘宝信用卡可以套现吗 编辑:程序博客网 时间:2024/05/17 22:15
单例模式
确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个。例如,创建一个对象需要消耗的资源过多,如要访问IO和数据库等资源,这是就要考虑使用单例模式。
通过将单例类的构造函数私有化,使得外部类不能通过new的形式手动构造单例类的对象。单例类对外会公开一个公有静态方法,通过它获取单例类的唯一对象,在这个过程中,要确保多线程的环境下单例类的对象有且只有一个。
这里介绍三种单例模式:
- 懒汉模式
- 饿汉模式
- 推荐模式
懒汉模式
//懒汉模式 private static Singleton instance; private Singleton(Context context){ } public static synchronized Singleton getInstance(Context context) { if(instance==null){ instance = new Singleton(context); } return instance; }
懒汉模式在静态方法添加了synchronized关键字,使得方法同步,但是每次调用方法时都会进行同步,消耗不必要的资源,自然这种方式不被推荐。
饿汉模式
//饿汉模式 private static Singleton instance = new Singleton(); private Singleton(){ } public static synchronized Singleton getInstance() { return instance; }饿汉模式去掉了同步关键字,通过在声明时初始化对象实例。但是想象一下,项目中多个单例模式,用户不一定会使用到,这时初始化导致消耗了不必要的资源。
推荐模式
//推荐模式 private Singleton(){ } public static Singleton getInstance() { return SingletonHolder.instance; } private static class SingletonHolder{ private static final Singleton instance = new Singleton(); }
当第一次加载Singleton类时,并不会初始化对象。这种方式不能能够确保线程安全,也能够保证单例对象的唯一性,同时也延迟了单例的实例化。所以本文推荐这种模式。
1 0
- Android源码设计模式(一)-单例模式
- Android 设计模式一:单例模式
- Android设计模式之单例模式(一)
- Android设计模式(一)-单例模式
- 设计模式(一) 单例模式
- 设计模式(一):单例模式
- 单例模式---设计模式(一)
- 设计模式(一):单例模式
- 设计模式(一)-单例模式
- 设计模式(一):单例模式
- 设计模式(一)单例模式
- 设计模式(一)单例模式
- 设计模式-单例模式(一)
- 设计模式(一):单例模式
- 设计模式(一)单例模式
- 设计模式(一)--单例模式
- 设计模式(一):单例模式
- 设计模式(一)-单例模式
- 阿里云访问出现OneinStack
- 深入理解 Android 卷I
- 大敏捷之我见
- csu 入门题 棋局
- 小知识
- Android源码设计模式(一)-单例模式
- refs/for/ 与refs/heads/
- spring+quartz实现定时调度
- CTSC2017&&APIO2017
- 【Python专题】使用函数
- 程序员会设计后是一种什么样的感觉
- 【LeetCode】576. Out of Boundary Paths
- Thinkphp模板标签if和eq的区别和比较
- LuaJava在Java、Android中的使用