美文网首页
单例模式总结

单例模式总结

作者: jasonma1314 | 来源:发表于2018-11-16 14:36 被阅读0次

1.名词解释。

单例,顾名思义就是在整个程序中只有一个对象。所有能实现这一目的的方法都是单例模式。

2.具体实现

(1)构造方法私有,确保外部类中不能new对象。

(2)提供方法供外部调用。返回对象。

3.多种单例的实现及优缺点比较

(1)饿汉式实现。

public class Singleton {

//静态成员变量 程序加载时就会创建对象

private static Singleton mInstance=new Singleton();

//构造方法私有

private Singleton(){

}

//公开方法,供外部调用获取对象

public static Singleton getInstance() {

return mInstance;

  }

}

缺点:程序加载就创建对象,会增加不必要的内存开销。

(2)懒汉式实现。

public class Singleton {

//静态成员变量

    private static Singleton mInstance;

    //构造方法私有

    private Singleton(){

}

//公开方法,返回对象

    public static Singleton getInstance() {

if(mInstance==null){

mInstance=new Singleton();

        }

return mInstance;

    }

}

与饿汉式差异:将创建对象操作移到公开方法中,判断对象为空则创建,不为空直接返回。

缺点:多线程操作时,不能确保单例。

(3)同步方法实现

public class Singleton {

//静态成员变量

    private static SingletonmInstance;

    //构造方法私有

    private Singleton(){

}

//公开方法,返回对象,增加synchronized关键字,

public static synchronized Singleton getInstance() {

if(mInstance==null){

mInstance=new Singleton();

        }

return mInstance;

    }

}

缺点:效率不高。

(4)同步锁加双重检查

public class Singleton {

//静态成员变量

    private static SingletonmInstance;

    //构造方法私有

    private Singleton(){

}

//公开方法,返回对象

    public static  Singleton getInstance() {

if(mInstance==null){

synchronized (Singleton.class){

if(mInstance==null){

mInstance=new Singleton();

                }

}

}

return mInstance;

    }

}

(5)加volatile关键字 (完美单例)

作用:1.防止重排序。2.线程可见性。

public class Singleton {

//静态成员变量

    private static volatile Singleton mInstance;

    //构造方法私有

    private Singleton(){

}

//公开方法,返回对象

    public static  Singleton getInstance() {

if(mInstance==null){

synchronized (Singleton.class){

if(mInstance==null){

mInstance=new Singleton();

                }

}

}

return mInstance;

    }

}

相关文章

  • iOS 单例模式 or NSUserDefaults

    本文内容:iOS的单例模式NSUserDefaults的使用总结:iOS单例模式 and NSUserDefaul...

  • 单例模式

    懒汉单例 饿汉模式 总结

  • 【本人秃顶程序员】Java几种方式实现单例模式之经验总结

    ←←←←←←←←←←←← 快,点关注! 最近总结了几种单例模式的实现,做个小总结给大家分享一下。 1、 单例模式,...

  • 单例模式

    单例设计模式是几种设计模式中比较容易理解的,手写单例模式也是面试频繁问到的。下面总结一下单例模式的几种写法: //...

  • Android 丨 单例模式

    面试过程中,单例模式总是会被问及,所以抽时间总结了一份单例相关的笔记 单例概念 单例模式是一种对象的创建模式,它用...

  • 基础-单例模式

    单例模式总结-Python实现 面试里每次问设计模式,必问单例模式 来自《Python设计模式》(第2版) 1.理...

  • PHP常用设计模式

    工厂模式 单例模式 注册树模式 适配器模式 策略模式 总结

  • 你真的会写单例?

    提到单例模式,相信都不会陌生,今天对其进行总结。 以下是单例模式的特点: 单例类只能有一个实例。 单例类必须自己自...

  • 【设计模式】单例模式

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

  • java单例模式(推荐)

    单例模式有许多写法,可以结合自己理解选择一个自己喜欢的 引入一个其他人的博客关于单例的不错总结; 单例 单例模式 ...

网友评论

      本文标题:单例模式总结

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