美文网首页程序员
Android设计模式之单例模式

Android设计模式之单例模式

作者: 名聪小先生 | 来源:发表于2017-12-02 17:42 被阅读0次

    一、定义

    单例模式是android开发应用最多的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到,如多个模块使用同一个数据源连接对象等等;

    需要注意的是:

    1、单例类只能有一个实例。

    2、单例类必须自己创建自己的唯一实例。

    3、单例类必须给所有其他对象提供这一实例

    二、优势

    1、由于单例模式在内存中只有一个实例,所以可以减少内存开销,特别是一个对象咱们需要频繁地创建、销毁时,而且创建或销毁时性能又无法优化,这时单例模式的优势就非常明显;

    2、可以避免对资源的多重占用,避免对同一资源进行多种操作;

    3、单例模式可以在系统设置全局的访问点,优化和共享资源访问;

    三、缺点

    1、单例采用静态方法,无法在继承结构中使用;

    2、不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态;

    3、可能的开发混淆,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类;

    四、常用实现方式

    (1)饿汉式

    // 在类被加载进入内存的时候就创建单一的Person对象

    private static Person mPerson=new Person();

    // 构造函数私有化

    private Person() {

    }

    // 提供一个全局的静态方法

    public static Person new Instance() {

    return mPerson;

    }

    特点:声明静态对象的时候进行初始化静态对象,以后不再改变,天生是线程安全,同时饿汉式是最简单的实现方式,这种实现方式适合那些在初始化时就要用到单例的情况,这种方式简单粗暴,如果单例对象初始化非常快,而且占用内存非常小的时候这种方式是比较合适的,可以直接在应用启动时加载并初始化。弊端:消耗资源。

    (2)懒汉式单例

    public class Person {

    //私有的构造函数

    private Person() {

    }

    //私有的静态变量

    private static Person mPerson=null;

    //暴露的公有静态方法

    public static Person getInstance() {

    if(mPerson==null) {

    mPerson=new Person();

    }

    return mPerson;

    }

    }

    特点:懒汉式与饿汉式的最大区别就是将单例的初始化操作,优势在于延迟加载,这样做在某些场合中有很大用处。弊端:线程不安全。

    总结:用单例模式,就是在适用其优点的状态下使用, 一般而言,手机客户端通常没有高并发的情况,所以具体选择哪种实现方式并不会有太大的影响。

    相关文章

      网友评论

        本文标题: Android设计模式之单例模式

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