美文网首页Android技术知识Android开发Android开发
Android常见设计模式—单例模式

Android常见设计模式—单例模式

作者: 大漠孤烟直_v | 来源:发表于2020-03-12 16:48 被阅读0次

作用:保证应用程序中,一个类只有一个实例存在。

好处
单例模式在内存中只有一个实例,减少了内存开销
可以避免对资源的多重占用,例如写一个文件时,由于只有一个实例在内存中,避免对同一个资源文件的同时操作

第一种:(懒汉式)

public class Singleton {
    private Context mContext;
    /**
     * 持有私有静态实例,防止被访问
     * 此处赋值为null 目的是实现延迟加载
     */
    private static Singleton singleton = null;

    /**
     * context.getApplicationContext(); 将单例的的上下文置于application的上下文,防止内存泄漏
     */
    private Singleton(Context context) {
        mContext = context.getApplicationContext();
    }

    private Singleton getSingleton(Context context) {
        if (singleton != null) {
            singleton = new Singleton(context);
        }
        return singleton;
    }
}

这种有个问题,不同步,在对数据库对象进行频繁的读写操作时,不同步问题就大了。

第二种:

/**
 *同步代方法
*/
private  synchronized Singleton getSingleton(Context context) {
    if (singleton != null) {
        singleton = new Singleton(context);
    }
    return singleton;
}

或者

 /**
  *同步代码块
 */
 private Singleton getSingleton(Context context) {
        synchronized (Singleton.class) {
            if (singleton != null) {
                singleton = new Singleton(context);
            }
        }
        return singleton;
    }

Android中常见的单例模式有:InputMethodManagerBluetoothOppManagerCalendarDatabaseHelper

注意:Application并不是单例模式
Application源码中,我们可以知道它的构造方法是公有的,意为着可以生出多个Application实例,那为什么Application能实现一个app只存在一个实例的呢?我们再去看Application的父类ContextWrapper的源码可以知道,就算有多个Applicaiton实例,但是没有通过attach()绑定相关信息,没有上下文环境,就三个字,然并卵。

相关文章

  • Android 设计模式之简单工厂模式

    设计模式系列文章 Android 设计模式之单例模式 Android 设计模式之Builder模式 Android...

  • 单例模式

    JAVA设计模式之单例模式 十种常用的设计模式 概念: java中单例模式是一种常见的设计模式,单例模式的写法...

  • python之理解单例模式

    python之理解单例模式 1、单例模式 单例模式(Singleton Pattern)是一种常见的软件设计模式,...

  • OC中的单例

    单例,感觉挺高大上的,单例是程序中常见的一种设计模式,常用的设计模式还有代理设计模式,观察者模式等等;所谓单例就是...

  • Java设计模式—单例模式

    概念 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,比较常见的有:懒汉式单例、饿汉式单例。单例模...

  • iOS单例模式

    1 单例模式 它是一种设计模式(常见的设计模式有:观察者模式、工厂模式、门面模式等)。单例设计模式中,一个类只有一...

  • Android设计模式-模版方法模式

    UML关系简单介绍UML简单使用的介绍创建型设计模式Android设计模式-单例模式Android设计模式-工厂模...

  • Android设计模式-迭代器模式

    UML关系简单介绍UML简单使用的介绍创建型设计模式Android设计模式-单例模式Android设计模式-工厂模...

  • Android设计模式-享元模式

    UML关系简单介绍UML简单使用的介绍创建型设计模式Android设计模式-单例模式Android设计模式-工厂模...

  • Android设计模式-桥接模式

    UML关系简单介绍UML简单使用的介绍创建型设计模式Android设计模式-单例模式Android设计模式-工厂模...

网友评论

    本文标题:Android常见设计模式—单例模式

    本文链接:https://www.haomeiwen.com/subject/dtrmjhtx.html