单例模式(二)

作者: Gray_s | 来源:发表于2017-08-16 17:48 被阅读0次

单例模式在Android源码中的应用

除了之前说的几种单例的实现方式之外还可以使用容器来实现。

public class SingletonManager {
    private static final Map<String, Object> instanceMap = new HashMap<String, Object>();

    public static void register(String key, Object obj) {
        instanceMap.put(key, obj);
    }

    public static Object get(String key) {
        return instanceMap.get(key);
    }
}

在Android的系统服务创建时在使用了这个方法以保证任务的单例,并提供给我们使用。以LayoutInflater为例。

LayoutInflater.class

可以看到context.getSystemService方法是Context提供给我们获取服务的方法。

ContextImpl.class

Context的实现类ContextImpl中可以找的方法的实现。

SystemServiceRegistry.class

SystemServiceRegisty类中可以发现SYSTEM_SERVICE_FETCHERS(静态的HashMap<String, ServiceFetcher<?>>)可以获取到一个ServiceFetcher<?>对象,在通过这个对象的getService方法获取到相应的服务。

SystemServiceRegisty类是被final修饰的类无法被继承,并且私有了构造方法。其中有一个静态方法是用于注册服务的也就是把ServiceFetcher<?>放入HashMap中去。

registerService方法

由于这个方法是私有的,就导致注册的操作必须在这个类中完成。所以所有服务的创建都在这个类的静态代码块中完成。

创建和注册服务

以上就是Android中实现服务单例的过程。

相关文章

  • 单例模式

    一、单例模式介绍 二、单例模式代码实例

  • 单例模式

    一、实现单例模式 或者 二、透明的单例模式 三、用代理实现单例模式 四、JavaScript中的单例模式 在Jav...

  • OC - 单例模式

    导读: 一、什么是单例模式 二、单例的作用 三、常见的单例类 四、自定义单例类的方法 一、什么是单例模式 单例模式...

  • 设计模式-iOS常见

    一、单例模式 系统的单例模式(Singleton Pattern) 二、中介者模式 中介者模式(Mediator ...

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • 单例模式

    一、定义 单例模式:单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 二、单例模式结构...

  • Python 面向对象7: 单例模式

    一、内容 1.1、单例设计模式 1.2、__new__方法 1.3、Python 中的单例 二、单例设计模式 2....

  • 单例模式

    一、介绍 二、单例模式代码实现 三、单例的简介写法

  • Swift单例模式

    1.第一种单例模式 2.第二种单例模式

网友评论

    本文标题:单例模式(二)

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