设计模式之单例模式

作为码农中的一员,需要不断的学习。我在学习之余把关于自己阅读《大话设计模式》的笔记和自己的一些总结 写成博客和大家分享,也希望采用这种方式记录自己的学习之旅。本文仅供学习交流使用,侵权必删。不用于商业目的,转载请注明出处。

单例模式

单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。
让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。

单例模式类图

在这里插入图片描述

  • Singleton 为 单例类,可以通过getInstance方法创建自己的唯一实例。

单例模式代码

懒汉式 写法

// 单例模式
public class Singleton {
    private static volatile Singleton instance;
    // 对 构造函数 私有化 不让外界创建实例
    private Singleton() {}
    // 通过静态方法 返回 实例
    public static synchronized Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}
public class Test {
    public static void main(String[] args) {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        if (s1 == s2){
            System.out.println("两个实例是一样");
        }
    }
}

饿汉式 写法

此写法保证了类在加载时就创建一个单例,在调用getInstance方法之前 单例就已经存在。

// 单例模式
public class Singleton {
	// 设置静态不可修改的变量,在类创建的同时创建
    private static final Singleton instance = new Singleton();
    // 私有化构造方法
    private Singleton(){}
    public static Singleton getInstance()
    {
        return instance;
    }
}

单例模式的优缺点

优点

  • 因为 Singleton 类封装它的唯一实例,所以它可以严格地控制客户怎样访问它以及何时访问它。
  • 可以有效的控制实例数目。
  • 减少一个全局使用的类的频繁创建与销毁,减少资源消耗。

缺点

  • 由于没有抽象层,所以很难进行扩展扩展。
  • 不适用于场景发生变化的对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值