设计模式之单例模式--慕课网笔记

来源:互联网 发布:化学软件初中 编辑:程序博客网 时间:2024/06/15 07:33
第1章 单例模式简介
1-1 单例模式简介

单例模式
- 饿汉模式
- 懒汉模式

设计模式(Design Pattern)
是一套被反复使用、多数人知晓的、经过反复编写的、代码设计经验的总结。

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

有些对象我们只需要一个,比如:
配置文件、工具类、线程池、缓存、日志对象等

如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等

单例模式保证整个应用中某个实例有且只有一个

第2章 单例模式的实现
2-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-2 单例模式的懒汉式实现
/* * 懒汉模式 * 区别:饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全 *      懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全 */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;    }}
public class Test {    public static void main(String[] args) {        //饿汉模式        Singleton s1=Singleton.getInstance();        Singleton s2=Singleton.getInstance();        if(s1==s2){            System.out.println("s1和s2是同一个实例");        }else{            System.out.println("s1和s2不是同一个实例");        }        //懒汉模式        Singleton2 s3=Singleton2.getInstance();        Singleton2 s4=Singleton2.getInstance();        if(s3==s4){            System.out.println("s3和s4是同一个实例");        }else{            System.out.println("S3和s4不是同一个实例");        }    }}
第3章 “饿汉模式”和“懒汉模式”的区别
3-1 “饿汉式” pk “懒汉式”

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


《模式的秘密—单例模式》视频地址