112-模式的秘密---单例模式

系列课程:模式宗师养成宝典之Java版

http://www.imooc.com/learn/112

简介:设计模式是前辈们在多年开发工作中经验的总结,可以提高代码的可重用性、可靠性和规范性,让代码更容易理解,而单例模式是在Java中最重要、最简单、最常用的设计模式之一,让我们一起来揭开它的神秘面纱吧。

第1章 单例模式简介

本章节让我们一起来学习设计模式和单例模式的相关概念、作用及分类

1-1 单例模式简介 (03:43)

单例模式

  • 概念及应用场景
  • 饿汉模式
  • 懒汉模式
  • 饿汉模式和懒汉模式的区别

什么是设计模式(Design Pattern)

是一套被反复使用、多数人知晓的、
经过分类编目的、代码设计经验的总结

目的

使用设计模式是为了可重用代码、
让代码更容易被他人理解、保证代码可靠性

设计模式(23种):单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式

单例设计模式

有些对象我们只需要一个。比如:配置文件、工具类、线程池、缓存、日志对象等
如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等。
单例模式保证整个应用中某个实例有且仅有一个

第2章 单例模式的实现

本章节主要讲解单例模式中的饿汉模式和懒汉模式的实现

  • 懒汉模式
  • 饿汉模式

2-1 单例模式的饿汉式实现 (10:18)

  1. Singleton类编写

    public class Singleton {
        // 1. 将构造方法私有化,不允许外部直接创建对象。
        private Singleton() {
        }
    
        // 2. 创建类的唯一实例,使用private static修饰
        // 此处代码在何时加载?
        private static Singleton instance = new Singleton();
    
        // 3. 提供一个用于获取实例的方法,使用public static修饰
        public static Singleton getInstance() {
            return instance;
        }
    }
  2. SingletonTest测试类编写

    public class SingletonTest {
        public static void main(String[] args) {
            Singleton s1 = Singleton.getInstance();
            Singleton s2 = Singleton.getInstance();
            System.out.println(s1 == s2);// true
        }
    }

思考此代码在何时加载?

private static Singleton instance = new Singleton();
  • 当类被加载的时候加载,不论其他程序是否调用。被称为饿汉模式

2-2 单例模式的懒汉式实现 (04:23)

  1. Singleton2类编写

    public class Singleton2 {
        // 1. 将构造方法私有化,不允许外部直接创建对象
        private Singleton2() {
        }
    
        // 2. 声明类的唯一实例,使用private static修饰
        private static Singleton2 instance;
    
        // 3. 提供一个用于获取实例的方法,使用public static修饰
        public static Singleton2 getInstance() {
            if (instance == null) {
                instance = new Singleton2();
            }
            return instance;
        }
    }
  2. SingletonTest测试类编写

    public class SingletonTest {
        public static void main(String[] args) {
            Singleton2 s3 = Singleton2.getInstance();
            Singleton2 s4 = Singleton2.getInstance();
            System.out.println(s3 == s4);// true
        }
    }

第3章 “饿汉模式”和“懒汉模式”的区别

理解饿汉模式和懒汉模式的区别,活学活用

3-1 “饿汉式” pk “懒汉式” (01:52)

区别:

  1. 饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全
  2. 懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全

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

文章标题:112-模式的秘密---单例模式

文章字数:916

本文作者:神秘的小岛岛

发布时间:2019-12-14, 12:24:49

最后更新:2020-01-05, 14:33:40

原始链接:https://www.tuyrk.cn/imooc/112-singleton-mode/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏