设计模式之单例模式

  1. 简单梳理单例模式
    1. 单例模式的几种实现
      1. 定义业务方法
      2. 执行结果
      3. 结果分析
  2. 联系作者
    1. 微信公众号
    2. QQ群

简单梳理单例模式

单例模式的几种实现

单例模式分为三种实现方法,具体如下

饿汉式

//饿汉式
public class SingleDemo {
    private static SingleDemo singleDemo = new SingleDemo();

    private SingleDemo() {

    }

    public static SingleDemo getInstance() {
        return singleDemo;
    }
}

懒汉式

//懒汉式
public class SingleDemo2 {
    private static SingleDemo2 singleDemo2 = null;

    private SingleDemo2() {

    }

    public static SingleDemo2 getInstance() {
        if (null == singleDemo2) {
            synchronized (SingleDemo2.class) {
                if (null == singleDemo2) {
                    return singleDemo2 = new SingleDemo2();
                }
            }
        }
        return singleDemo2;
    }
}

内部类 饿汉式

public class SingleDemo3 {
    private SingleDemo3() {

    }

    private static class SingleHold {
        private static SingleDemo3 singleDemo3 = new SingleDemo3();
    }

    public static SingleDemo3 getInstance() {
        return SingleHold.singleDemo3;
    }
}

这样我们前期的定义就算做完了,
然后我们看具体应用中的使用。

定义业务方法

看在具体业务逻辑中如何使用

public class SingletonTest {
    public static void main(String[] args) {
        //单例模式
        func1();
    }

    public static void func1(){
        SingleDemo singleDemo = SingleDemo.getInstance();
        SingleDemo singleDemo1 = SingleDemo.getInstance();
        System.out.println(singleDemo == singleDemo1);

        SingleDemo2 singleDemo2 = SingleDemo2.getInstance();
        SingleDemo2 singleDemo21 = SingleDemo2.getInstance();
        System.out.println(singleDemo2 == singleDemo21);

        SingleDemo3 singleDemo3 = SingleDemo3.getInstance();
        SingleDemo3 singleDemo31 = SingleDemo3.getInstance();
        System.out.println(singleDemo3 == singleDemo31);
    }
}

执行结果

true
true
true

结果分析

单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。  

单例模式除了可以保证唯一的实例外,还有什么好处呢?
单例模式因为Singleton类封装它的唯一实例,这样它可以严格的控制客户怎样访问它以及合适访问它。
简单点说就是对唯一实例的受控访问。

联系作者

微信公众号

xiaomingxiaola
(BossLiu)

QQ群

58726094


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com

×

喜欢就点赞,疼爱就打赏

日记本 网文世界