设计模式
1. 设计模式 设计模式是一套反复使用,多数人知晓的,代码设计经验的总结,,,,目的可重用代码,让代码更容易被他人理解,保证代码可靠性。
JAVA 23 设计模式,单例模式,工厂模式等。
为什么需要单例模式?????有些对象我们只需要一个,例如配置文件,工具类,线程池,缓存,日志对象等。单例模式保证整个应用中某个实例有且只有一个。
单例模式分为 饿汉模式 ,懒汉模式
* 区别:饿汉模式 的特点是加载类的时候比较慢,但是运行的时候获取对象的速度非常快,线程安全
* 懒汉模式 的特点是类加载比较快,但是运行时候获取对象的速度比较快,线程不安全
1. 饿汉模式
/* * 单例模式 Singleton * 应用场合:有些对象有时候只是需要一个就足够了,如古代皇帝,老婆 * 作用:保证整个应用程序中某个实例有且只有一个 * 类型:饿汉模式 ,懒汉模式 * 区别:饿汉模式 的特点是加载类的时候比较慢,但是运行的时候获取对象的速度非常快,线程安全 * 懒汉模式 的特点是类加载比较快,但是运行时候获取对象的速度比较快,线程不安全 */ public class Singleton { //1. 将构造方法私有化,不允许外部直接创造对象 private Singleton(){ } // 2. 创建类的唯一实例 使用private static修饰 // 饿汉模式 在什么时候加载,静态成员属于类所有,所以当类加载的时候,就会执行,创建类的唯一实例,不管用户是否创建调用 private static Singleton instance=new Singleton(); // 提供一个用于获取实例的方法 使用private static修饰 public static Singleton getInstance(){ return instance; } }
2.懒汉模式
/*
* 懒汉模式
*/
public class Singleton2 {
//1. 将构造方法私有化,不允许外部直接创造对象
private Singleton2(){
}
// 2. 创建类的唯一实例 使用private static修饰
private static Singleton2 instance;
// 3.提供一个用于获取实例的方法 使用private static修饰
public static Singleton2 getInstance(){
if(instance==null){
instance=new Singleton2();
}
return instance;
}
}
3. 测试类
public class Demo { 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不是同一个实例"); } } }