《图解设计模式》读书笔记3-1 Singleton模式
单例模式
确保任何情况下都只有一个实例
饿汉式
public class Singleton {
    //在类被加载的时候运行一次,这是本类构造函数的唯一一次使用。
    //未被使用之前就已经实例化完成,称为饿汉式
    private static Singleton singleton = new Singleton();
    //构造函数为私有的,只有本类才能构造实例
    private Singleton() {
        System.out.println("生成了一个Singleton实例");
    }
    //外界只能通过唯一的getInstance方法获得这个唯一的实例
    public static Singleton getInstance() {
        return singleton;
    }
}
优点:实现简单,没有线程同步问题。
缺点:实例会一直占用内存,浪费空间。
懒汉式
public class Singleton2 {
    private static Singleton2 instance;
    private Singleton2() {}
    public static Singleton2 getInstance() {
        //在别人需要的时候才开始实例化
        if(instance == null) {
            instance = new Singleton2();
        }
        return instance;
    }
}
优点:实例化推迟到需要之时,不浪费内存空间。
缺点:线程不安全
线程安全的懒汉式
public class Singleton3 {
    private static Singleton3 instance;
    private Singleton3() {}
    public static Singleton3 getInstance() {
        if(instance == null) {
            //需要时创建,并且只对关键代码块加锁,保证性能
            synchronized (Singleton3.class) {
                if (instance == null) {
                    instance = new Singleton3();
                }
            }
        }
        return instance;
    }
}
优点:推迟加载,占用空间少,线程安全
缺点:麻烦
《图解设计模式》读书笔记3-1 Singleton模式的更多相关文章
- HeadFirst设计模式读书笔记(3)-装饰者模式(Decorator Pattern)
		装饰者模式:动态地将责任附件到对象上.若要扩展功能,装饰者提东了比继承更有弹性的替代方案. 装饰者和被装饰对象有相同的超类型 你可以用一个或者多个装饰者包装一个对象. 既然装饰者和被装饰对象有相同的超 ... 
- HeadFirst设计模式读书笔记--目录
		HeadFirst设计模式读书笔记(1)-策略模式(Strategy Pattern) HeadFirst设计模式读书笔记(2)-观察者模式(Observer Pattern) HeadFirst设计 ... 
- Head First 设计模式读书笔记(1)-策略模式
		一.策略模式的定义 策略模式定义了算法族,分别封装起来,让它们之间可以互换替换,此模式让算法的变化独立使用算法的客户. 二.使用策略模式的一个例子 2.1引出问题 某公司做了一套模拟鸭子的游戏:该游戏 ... 
- JavaScript设计模式:读书笔记(未完)
		该篇随我读书的进度持续更新阅读书目:<JavaScript设计模式> 2016/3/30 2016/3/31 2016/4/8 2016/3/30: 模式是一种可复用的解决方案,可用于解决 ... 
- C#设计模式学习笔记:(5)原型模式
		本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7640873.html,记录一下学习过程以备后续查用. 一.引言 很多人说原型设计模式会节省机器内存,他们说 ... 
- 图解http读书笔记
		以前对HTTP协议一知半解,一直不清楚前端需要对于HTTP了解到什么程度,知道接触的东西多了,对于性能优化.服务端的配合和学习中也渐渐了解到了HTTP基础的重要性,看了一些大神对HTTP书籍的推荐,也 ... 
- Java设计模式学习笔记(二) 简单工厂模式
		前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 正文开始... 1. 简介 简单工厂模式不属于GoF23中设计模式之一,但在软件开发中应用也较为 ... 
- Java设计模式学习笔记(三) 工厂方法模式
		前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 简介 上一篇博客介绍了简单工厂模式,简单工厂模式存在一个很严重的问题: 就是当系统需要引入 ... 
- Java设计模式学习笔记(四) 抽象工厂模式
		前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 抽象工厂模式概述 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问 ... 
- C#设计模式学习笔记:(23)解释器模式
		本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/8242238.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第十一个模式-- ... 
随机推荐
- Centos6.8忘记MySQL数据库root密码解决方法
			一.更改MySQL配置文件my.cnf,跳过密码验证. 编辑配置文件/etc/my.cnf文件,在[mysqld]下面添加skip-grant-tables,保存退出.如图: vim /etc/my. ... 
- HDU 1174 题解(计算几何)
			题面: 爆头 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ... 
- [常用类]排序及Arrays类(简单介绍)
			冒泡排序bubble sort 轻的上浮,重的下沉.两个相邻位置比较,如果前面元素比后面的元素大就换位置 选择排序 select sort 用一个索引上的元素,依次和其他位置上的元素比较,小的放前面 ... 
- python 模块导入import和import from区别
			模块就是一个.py文件,在名字空间下导入模块导入import和import from,那么python 模块导入import和import from区别是什么呢 1,import 导入模块 impor ... 
- MFC框架各部分指针获取方式
			MFC框架各部分指针获取方式 前人在CSDN总结的,曾经帮助过我,整理总结一下,希望也能帮助一下别人. 获得CWinApp 获得CMainFrame 获得CChildFrame 获得CDocument ... 
- 详解 HiveUDF 函数
			更多精彩原创内容请关注:JavaInterview,欢迎 star,支持鼓励以下作者,万分感谢. Hive 函数 相信大家对 Hive 都不陌生,那么大家肯定用过 Hive 里面各种各样的函数.可能大 ... 
- 基于 Python 的自定义分页组件
			基于 Python 的自定义分页组件 分页是网页中经常用到的地方,所以将分页功能分出来,作为一个组件可以方便地使用. 分页实际上就是不同的 url ,通过这些 url 获取不同的数据. 业务逻辑简介 ... 
- vue使用canvas生成海报图
			有个挺好用的插件能很好地实现vue生成海报图,虽然有一定的限制,但基本需求还是能实现的 1.安装 npm i vue-canvas-poster --save 2.全局配置 // or Global ... 
- 解决代码加载慢,以至于乱码—————VUE
			vue.js解决开始代码加载,以至于乱码 vue.js通过几行代码可以解决这个问题 css: [v-cloak] { display: none; } html: <div id="a ... 
- Dorado环境启动出错Spring加载不到资源Bean配置  at org.springframework.asm.ClassReader.<init>(Unknown Source)
			ERROR: org.springframework.web.context.ContextLoader - Context initialization failed org.springframe ... 
