zoukankan      html  css  js  c++  java
  • android 单例模式

    单例模式特点:

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

    2、自己创建这个实例

    3、整个系统都要使用这个实例

    单例模式的形式:

    1、饿汉式单例类

    public class Singleton {

    private Singleton(){}

    //在自己内部定义自己一个实例,是不是很奇怪?

    //注意这是private 只供内部调用

    private static Singleton instance = new Singleton();

    //这里提供了一个供外部访问本class的静态方法,可以直接访问

    public static Singleton getInstance() {

    return instance;

    }

    }

    2、懒汉式单例类

    private static Singleton instance = null;

    public static synchronized Singleton getInstance() {

    //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次

    //使用时生成实例,提高了效率!

    if (instance==null)

    instance=new Singleton();

    return instance; }

    }

    第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。

    注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。
    一般来说第一种比较安全

    3、比较常使用的是:

    public class Singleton {

    private volatile static Singleton singleton;

    private Singleton(){}

    public static Singleton getInstance(){

    if(singleton==null){

    synchronized(Singleton.class){

    if(singleton==null){

    singleton=new Singleton();

    }

    }

    还可以参考一下android的Activity加载模式:

    1、singleTop

    2、singleTask

    3、singleInstance

  • 相关阅读:
    Python统计字符串中出现次数最多的人名
    初探CORBA组件化编程
    shell脚本—基础知识,变量
    Java多线程--线程交替
    Qt中采用多线程实现Socket编程
    Python字符串格式化--formate()的应用
    JAVA中浅复制与深复制
    Python这些问题你会吗?
    PHP控制反转(IOC)和依赖注入(DI
    Go 语言指针
  • 原文地址:https://www.cnblogs.com/xulibing/p/5268342.html
Copyright © 2011-2022 走看看