`
切切歆语
  • 浏览: 30208 次
  • 性别: Icon_minigender_1
  • 来自: 泸州市
社区版块
存档分类
最新评论

Android设计模式之单例模式

 
阅读更多

定义

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例 。

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需 要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让 类的实例去生成另一个唯一实例毫无意义。

其又分为三种形式

饿汉式

//只有内部类可以为static。
public class SingIn{
    //在自己内部定义自己的一个实例,只供内部调用
    private static final SingIn instance = new SingIn();
    private SingIn(){
    }
    //这里提供了一个供外部访问本class的静态方法,可以直接访问
    public static SingIn getInstance(){
        return instance;
    }
}

懒汉式

  /***
     * 一种常用的形式
     */
    private static SingIn instance = null; 
    public static synchronized SingIn getInstance() {         
      // 这个方法比上面有所改进,不用每次都进行生成对象,只是第一次  
      // 使用时生成实例,提高了效率!  
       if (instance == null)  
              instance = new SingIn();  
              return instance;  
    }  


双重锁式

//将同步内容下方到if内部,提高了执行的效率,不必每次获取对象时都进行同步,只有第一次才同步,创建了以后就没必要了。 
private static volatile SingIn instance=null;
 private SingIn (){
 
 }
 public static  SingIn getInstance(){
    if(instance==null){
      synchronized(SingIn .class){
      if(instance==null){
        instance=new SingIn ();
       }
      }
     }
    return instance;
  }


使用方式,直接调用getInstance()方法即可得到对象。

优点

实例控制:Singln 会阻止其他对象实例化其自己的 Singln 对象的副本,从而确保所有对象都访问唯一实例

灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程

缺点

开销:虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销,可以通过使用静态初始化解决此问题。

可能的开发混淆:使用 Singln 对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用 new 关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。

对象的生存期:Singln 不能解决删除单个对象的问题。



分享到:
评论

相关推荐

    android-设计模式-单例模式(干货)

    android 单例模式 干货 告诉你哪种单例模式最实用 最好用 不再迷茫

    android设计模式之单例模式详解

    主要介绍了android设计模式中的单例模式详解,需要的朋友可以参考下

    Android设计模式之单例模式解析

    单例模式是软件设计模式中的一种基础模式,它的核心目标是确保一个类只有一个实例,并提供一个全局访问点。在Android开发中,单例模式常常被用来管理应用程序全局的状态,例如Application对象、图片加载框架或数据...

    Android设计模式之单例模式详解

    单例模式 一个类只有一个实例,并且可以全局访问使用 应用场景 如账户管理类,数据库操作类等(某个对象频繁被访问使用) 常用方式 饿汉式 懒汉式 同步加锁 DCL双重加锁验证 静态内部类 枚举单例 饿汉式 加载类的...

    Android编程设计模式之单例模式实例详解

    本文实例讲述了Android编程设计模式之单例模式。分享给大家供大家参考,具体如下: 一、介绍 单例模式是应用最广的模式之一,也可能是很多初级工程师唯一会使用的设计模式。在应用这个模式时,单例对象的类必须保证...

    java,android常用设计模式,单例,mvp

    本人深圳安卓开发程序猿一枚,希望能一起...最近重温了一下java的设计模式,练练手,java设计模式有23种,写了12种常用的设计模式,一些觉得用不上就没写,水平有限,有问题欢迎留言一起加油email:674928145@qq.com!

    Android设计模式(详细讲解了10个Android设计模式)

    详细讲解了组合模式、观察者模式、单例模式、模板方法模式、备忘录模式、享元模式、命令模式、工厂方法模式、适配器模式 原型模式等10个Android设计模式,和CSDN上其他讲Android设计模式的文章完全不同。讲解详细,...

    android常用设计模式

    Android 设计模式系列还包括工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式、适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式、解释器模式、模板方法模式、职责链模式、命令...

    android Dagger2局部单例使用

    单例模式是一种常见的设计模式,确保一个类只有一个实例,并提供一个全局访问点。在Dagger2中,我们可以使用`@Singleton`注解来声明一个组件或模块为单例,但这里的“全局”并非在整个应用范围,而是限制在特定的...

    Android源码设计模式解析与实战.PDF(完整版)

    ### Android设计模式概述 #### 设计模式定义 设计模式是软件工程领域的一个重要概念,它代表着在特定场景下解决常见问题的有效方法。对于Android开发者而言,了解并掌握这些设计模式能够帮助他们编写更加高效、可...

    Android线程池+单例模式+webService

    接下来,单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在Android中,单例模式常用于网络请求、数据库操作、偏好设置等场景。实现单例通常有懒汉式(线程不安全)、饿汉式(线程安全)...

    Android源码学习之单例模式应用及优点介绍

    单例模式是软件设计模式中的一种经典模式,其主要目的是限制类的实例化次数,确保在任何情况下都只有一个实例存在。在Android系统中,单例模式的应用非常广泛,尤其是在需要全局访问点或管理共享资源的场景下。接...

    android设计模式

    "android设计模式"这一主题,主要涵盖了一些常见的设计原则、模式以及如何在Android环境中应用它们。《设计模式之禅》作为一本经典著作,其深入浅出的讲解方式使得读者能够轻松掌握设计模式的核心理念。 1. **设计...

    java单例模式在android中的应用

    Java的单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。在Android开发中,单例模式的应用尤其广泛,因为它能够有效管理资源,减少内存开销,提高性能。以下是对单例模式在Android中...

    Android设计模式系列之单例模式

    单例模式是软件设计模式的一种,其主要目的是确保一个类只有一个实例,并且提供一个全局访问点来获取这个实例。在Android系统中,单例模式被广泛应用于管理那些需要全局共享的资源,例如输入法管理者...

    Android源码设计模式解析与实战 pdf 完整版

    总的来说,《Android源码设计模式解析与实战》是一本深入浅出的Android设计模式教程,对于希望提升Android开发技能的工程师来说,是一份不可多得的学习资料。通过对书中的知识点进行深入学习和实践,开发者将能更好...

    Android设计模式

    下面将详细探讨Android设计模式中的关键知识点。 1. 单例模式(Singleton):在Android中,单例模式用于确保一个类只有一个实例,并提供全局访问点。例如,Android系统的应用上下文(Context)就是通过单例模式管理的...

Global site tag (gtag.js) - Google Analytics