为了账号安全,请及时绑定邮箱和手机立即绑定

设计模式之—1.单例模式

标签:
设计

1.什么是单例模式

确保某一个类在整个项目中只有一个实例,并且自行创建实例化对象,并向整个系统提供这个实例。

2.单例模式通用类图

1.单例模式通过将构造函数设置为私有,来限制外部实例话对象。
2.提供一个getInstanse接口返回内部创建的实例对象。

类图如下:
https://img1.sycdn.imooc.com//5b8172580001c8e605200288.jpg

3.单例模式的几种实现方法

方法一:饿汉模式

单例模式实现方式有多种,其中比较简单的实现方式是直接定义一个private的属性,并直接初始化。相关实现如下:

public class SingletonPattern {    private static final SingletonPattern singletonPattern = new SingletonPattern();    private SingletonPattern(){

    }    public static SingletonPattern getInstance(){        return singletonPattern;
    }
}

这种方法被称为饿汉模式,即不管有没有地方需要获取实例对象,都在类加载的时候直接实例话对象出来。此中方式类加载比较慢,但是获取实例对象比较快。

方法二:懒汉模式

另外一种实现方式被称为懒汉模式,即在第一次调用getInstance方法的时候才会创建实例话对象。实现方式如下:

public class SingletonPattern2 {    private static SingletonPattern2 singletonPattern = null;    private SingletonPattern2(){

    }    public static SingletonPattern2 getInstance(){        if (singletonPattern == null) {
            singletonPattern = new SingletonPattern2();
        }        
        return singletonPattern;
    }
}

此种实现方式会有线程安全问题,即在getInstance中做了先检查再操作,下面是对此问题的一种解决方案:

public class SingletonPattern2 {    private static SingletonPattern2 singletonPattern = null;    private SingletonPattern2() {

    }    public static synchronized SingletonPattern2 getInstance() {        if (singletonPattern == null) {
            singletonPattern = new SingletonPattern2();
        }        
        return singletonPattern;
    }
}

此种解决方式是在getInstance方法加了同步操作。

原文出处:https://www.cnblogs.com/vitasyuan/p/9535727.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消