设计模式
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不是同一个实例");
}
}
}

浙公网安备 33010602011771号