我是靠谱客的博主 孝顺裙子,最近开发中收集的这篇文章主要介绍说说-设计模式之创建型--单例模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

创建型模式-单例模式:独此一份。独生子女。

注意:

  • 1、单例类只能有一个实例。
  • 2、单例类必须自己创建自己的唯一实例。
  • 3、单例类必须给所有其他对象提供这一实例。

优点:

  • 1、一个实例,减少了内存的开销。
  • 2、避免对资源的多重占用。

缺点:没有接口,不能继承,与单一职责冲突。

注意:多线程状态使用同步锁 synchronized (Singleton.class) 防止造成 instance 被多次实例化。

案例:

1. 懒汉式

public class Singleton {
    private volatile static Singleton instance;
    private static Object syncIdentification = new Object();
    private Singleton() {
    }
    public static Singleton getInstance() {
        //双重锁定
        if(instance == null) {
            //同步锁
            synchronized (syncIdentification) {
                if(instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

2. 饿汉式

public class Singleton {
	//1. 构造器私有化, 外部能new
	private Singleton() {
	}
	//2.本类内部创建对象实例
	private  static Singleton instance;
	static { // 在静态代码块中,创建单例对象
		instance = new Singleton();
	}
	//3. 提供一个公有的静态方法,返回实例对象
	public static Singleton getInstance() {
		return instance;
	}

}

3. 静态内部类

public class Singleton {
	//构造器私有化
	private Singleton() {}
	//写一个静态内部类,该类中有一个静态属性 Singleton
	private static class SingletonInstance {
		private static final Singleton INSTANCE = new Singleton();
	}
	//提供一个静态的公有方法,直接返回SingletonInstance.INSTANCE
	public static synchronized Singleton getInstance() {
		return SingletonInstance.INSTANCE;
	}
}

 4. 枚举

public enum Singleton {
    INSTANCE; //属性

    public void doWork() {
        System.out.println("work~");
    }
}

 

最后

以上就是孝顺裙子为你收集整理的说说-设计模式之创建型--单例模式的全部内容,希望文章能够帮你解决说说-设计模式之创建型--单例模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部