android设计模式之---单例模式

原创 2016年06月01日 20:41:02

一.单例模式的介绍

单例模式是应用最广的模式之一,在应用的这个模式时,单例对象的类必须保证只有一个实例存在。许多的时候系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。比如ImageLoader。

二.懒汉模式

public class singleton{

    private static Singleton instance;

private Singleton(){}

public static synchronized Singleton getinstance(){

 if(instance==null){

      instance=new Singleton();

}

             return instance;

}

}

三.DCL实现单例

public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static Singleton getinstance(){
if(instance==null){
synchronized (Singleton.class) {
if(instance==null){
instance=new Singleton();
}
}
}
return instance;
}
}

可以看见DCL对于instance是否为空进行了两次的判断。第一次判断主要是为了避免不必要的同步,第二次是为了在为null的情况下创建实例。

DCL的优点:

资源利用率高,第一次执行getinstance时单例对象才会被实例化。缺点就是第一次加载时比较慢。

四.静态内部类单例模式

public class Singleton{

private Singleton(){}
public static Singleton getInstance(){
return SingletonHolder.instance;
}
private static class SingletonHolder{
private static final Singleton instance=new Singleton();
}
}

当第一次加载singleton类时并不会初始化instance,只有在第一次调用singleton的getinstance方法时才会导致instan被初始化。因此,第一次调用getinstance方法才会导致虚拟机加载SingletonHolder这个类,这种方式不仅能够保证线程安全,也能够保证单例对象的唯一性,同时也延迟了单例的加载,比较推荐。

五.枚举类型

public enum SingletonEnum{
INSTANCE;
public void doSomething(){
System.out.println("do some thing");
}
}

线程安全,任何状况下都是单例。

还有一种利用容器实现,平时用得比较少,(关键写起来繁琐)

单例模式在平时的代码中很常见,也很简单掌握。


Android面试设计模式之单例模式

在面试的时候面试官会问我们常用的一些设计模式,这里先介绍一下单例模式。 为什么要使用单例模式 1.控制资源的使用,通过线程同步来控制资源的并发访问; 2.控制实例产生的数量,达到节约系统资源; 3...
  • qq_435559203
  • qq_435559203
  • 2016年09月12日 18:25
  • 582

大话设计模式——单例模式

宏观导图 细节展示  单例模式的结构图: 关键代码:  在GetInstance方法中,要加入判断。 if (instance==null) { instance=new Single...
  • u011500356
  • u011500356
  • 2015年01月05日 21:44
  • 1469

java 单例设计模式使用场景

单例设计模式的使用场景说明,优缺点,在线程中该使用那种方式的单例,其中涉及到类在JVM中的分配......
  • bob_Xing_Yang
  • bob_Xing_Yang
  • 2017年05月23日 10:53
  • 384

设计模式之——单例模式(Singleton)的实现、优缺点和常见应用场景

一.单例模式的三种实现 以及各自的优缺点 转载自http://my.oschina.net/suyewanwan/blog/102525 单例模式:单例模式的意思就是只有一个实例。单例模式确保某...
  • qq_30465427
  • qq_30465427
  • 2015年08月09日 15:36
  • 1202

设计模式系列(一)单例模式

一、简单介绍 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。 《设计模式》书中对单例模式动机的介绍 对于系统中的某些类...
  • robertcpp
  • robertcpp
  • 2016年06月05日 11:00
  • 2238

设计模式(创建型)之单例模式(Singleton Pattern)

单例模式可能是23种设计模式中最简单的。应用也非常广泛,譬如Android中的数据库访问等操作都可以运用单例模式。核心概念: 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称...
  • yanbober
  • yanbober
  • 2015年04月27日 16:50
  • 2669

C++设计模式[二]单例模式

接着就是单例模式;个人理解就是把创建方法改为私有,然后再内部实例化,禁止外部创建对象。 何为单例模式,在GOF的《设计模式:可复用面向对象软件的基础》中是这样说的:保证一个类只有一个实例,并提供一个...
  • langb2014
  • langb2014
  • 2015年11月03日 16:11
  • 1079

设计模式:单例模式(Singleton)

单例模式在23个设计模式中算得上是最简单的一个了,也行你会有异议,那就换成“最简单之一”,这样就严谨了很多。   单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。   适用性:当类...
  • u013256816
  • u013256816
  • 2016年03月23日 21:37
  • 4930

使用Object-C实现23种设计模式之单例模式

今天给大家讲解一下第四种创建模式——单例模式,单例模式不同于前几种,前几种更注重逻辑,而单例模式则偏重于内存管理以及实际运用,相对前几种要相对简单。 所谓单例模式,就是一种让某个类只产生单一实例的模式...
  • u013054715
  • u013054715
  • 2016年05月23日 22:43
  • 4401

安卓中的两种设计模式:单例模式,观察者模式

单例模式 线程不安全的写法:两者的初始化时间不一样;在多线程中使用可能出现并发问题, package lanxin.lanxin.bean; /** * Created by crs on 201...
  • chenrushui
  • chenrushui
  • 2017年04月26日 19:41
  • 354
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android设计模式之---单例模式
举报原因:
原因补充:

(最多只允许输入30个字)