课程名称:Java工程师2022版
课程章节:Java单例模式
课程内容:
Java的单例模式,其目的、定义、要点、实现以及实现方案的两种代码模式:懒汉式和饿汉式
Java单例模式的优缺点以及使用场景。
课程收获:
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案,是基于场景的
设计模式分为三种类型:创建型模式、结构型模式、行为型模式
目的:
使得类的一个对象成为该类系统中的唯一实例。
定义:
一个类有且仅有一个实例,并且自动实例化向整个系统提供。
要点:
1、某个类只能有一个实例。
2、必须自动创建实例。
3、必须自行向整个系统提供这个实例。
实现:
1、只提供私有的构造方法。
2、含有一个该类的静态私有对象。
3、提供一个静态的公有方法用于创建、获取静态私有对象。
代码实现方案有两种:饿汉式和懒汉式。
饿汉式:对象创建过程中实例化。
懒汉式:静态公有方法中实例化。
饿汉式:
1、在类加载时就创建实例,第一次调用时速度快
2、线程安全
懒汉式:
1、在第一次使用时进行实例化,第一次调用时速度慢,但若不调用则完全不占空间
2、存在线程风险
单例模式优点:
1、在内存中只有一个对象,节省内存空间
2、避免繁琐的创建销毁对象,提高性能
3、避免对共享资源的多重占有
单例模式缺点:
1、扩展比较困难
2、如果实例化后的对象长期不利用,系统将默认为垃圾进行回收,造成对象状态丢失
单例模式的特点及适用场景:
1、创建对象时占用资源过多,但同时又需要用到该类对象
2、对系统内资源要求统一读写,如读写配置信息
3、当多个实例存在可能引起程序逻辑错误,如号码生成器