week6(Sunday)
单例设计模式
1、什么是设计模式?
设计模式:是一套反复使用、多数人知晓的经过分类、编目的代码分布经验的总结设计模式是软件开发人员在软件开发过程中一般问题的解决方案。
Java常见设计模式有 23种,可分为 三类:
一、创建性 二、结构型 三、行为型
2、单例设计模式--(懒汉式、饿汉式)
目的:使得类的一个对象成为该类系统中的唯一一个实例,自行实例化并向整个系统提供这个实例实现步骤: 1、只提供私有的构造方法(防止外部创建对象)
2、只提供一个静态的私有对象
3、提供一个公有的方法用来创建获取静态的私有对象
-------2.1 饿汉式
创建对象实例时直接初始化, 用空间换时间(能保证线程安全)//饿汉式
public class Singleton {
//1、只提供私有的构造方法
private Singleton(){
}
//2、只提供静态的私有对象并完成初始化
private static Singleton singleton = new Singleton();
//3、提供一个公有的方法用来创建获取静态的私有变量
public static Singleton getSingleton(){
return singleton;//返回该唯一对象
}
}
-------2.2 懒汉式
等到需要使用对象时再创建对象, 用时间换空间(线程不安全)//懒汉式
public class Singleton2 {
//1、只提供私有的构造方法
private Singleton2(){
}
//2、只提供一个静态的私有对象,不初始化对象
private static Singleton2 singleton2;
//3、提供一个公有的方法用来创建获取静态的私有对象
public static Singleton2 getSingleton2(){
if(singleton2 == null){
singleton2 = new Singleton2();//创建对象
}
return singleton2;
}
}
-------2.3 单例模式设计调用方法
//单例设计模式类使用方法
public class SingletonTest {
public static void main(String[] args) {
//饿汉式
Singleton singletonOne = Singleton.getSingleton();
Singleton singletonTwo = Singleton.getSingleton();
//懒汉式
Singleton2 singleton2One = Singleton2.getSingleton2();
Singleton2 singleton2Two = Singleton2.getSingleton2();
}
}
3、单例设计模式(饿汉式与懒汉式)总结
优点: 1、在内存中只有一个对象,节省空间2、避免频繁创建销毁对象,提高性能
3、避免对共享资源的多重占用
缺点: 1、扩展比较困难
2、若实例化长期不利用,系统会自动进行垃圾回收,造成对象状态丢失
使用场景: 1、创建对象时占用资源过多,但同时又要用到该类对象
2、对系统内资源要统一读写,如读写配置信息
3、当多个实例存在可能引起程序逻辑错误,如号码生成器