设计模式——单例模式

上次我们讲到迭代器模式(设计模式——迭代器模式),这次我们来看一个最常用的设计模式——单例模式。单例模式的使用场景很多,比如处理偏好和设置注册表对象、日志对象、对话框等。单例模式是应用最广的设计模式之一,也是很多同学最熟悉的模式,因为它使用简单,很好理解,在一般情况下使用都不会出什么问题。但是如果深入去理解的话,还是会发现有些平时没注意到的问题的,下面就一起学习下巩固下吧。一、定义单例模式:确保一个
摘要由CSDN通过智能技术生成

上次我们讲到迭代器模式(设计模式——迭代器模式),这次我们来看一个最常用的设计模式——单例模式。单例模式的使用场景很多,比如处理偏好和设置注册表对象、日志对象、对话框等。单例模式是应用最广的设计模式之一,也是很多同学最熟悉的模式,因为它使用简单,很好理解,在一般情况下使用都不会出什么问题。但是如果深入去理解的话,还是会发现有些平时没注意到的问题的,下面就一起学习下巩固下吧。

一、定义

单例模式:确保一个类只有一个实例,而且自行实例化,并向整个系统提供这个实例。

二、UML类图

单例模式UML类图如下:
这里写图片描述

  • Client:客户端,使用单例类。
  • Singleton:单例类。

单例模式的UML图很简单,我们主要的关注点在单例类上。有几个注意点:1⃣,构造方法不对外开放,一般为private,这样就能保证客户端不能new一个单例类实例;2⃣,通过一个静态方法或者枚举返回单例对象;3⃣,确保单例类对象只有一个,特别是在多线程的情况下,这个尤为重要的,这一点也将是我们后面着重讲的;4⃣,确保单例类对象在反序列化时不会重新构建对象,这一点在要实现单例类序列化的情况下要多留意。

三、实例

单例模式的写法也很多种,我们针对一些常见的来一一解释下。

  • 首先见的最多的应该是这个,我们这里称它为version1.0:
public class Singleton {
private static Singleton mInstance = null;

    private Singleton() {

    }

    public static Singleton getInstance() {
        if (mInstance == null)
            mInstance = new Singleton();
        return mInstance;
    }
}

这个应该是最好理解的。首先定义一个Singleton的实例mInstance,这实例就是提供给客户端的,通过静态方法getInstance()返回该实例;然后定义的私有构造方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值