设计模式
可以重复利用的解决方案
从结构上分为三类: 创建型、结构型、行为型
最简单的是单例模式
优点:对象实例创建完成后,会放到堆中,如果堆中实例过多,会导致一些问题,如内存溢出等
使用单例后只会创建一个实例,显著减少实例对象的个数,同时也会提高性能,因为不会频繁创建对象。
单例解决什么问题?
//1)保证JVM中某一类型的Java对象,永远只有一个
//2)为了节省内存的开销
多个Java文件同时编译 javac *.java
Array array = new Array(); Array array1 = new Array(); if (array == array1){ System.out.println(true); }else { System.out.println(false); } //false /* == 如果两边都是基本数据类型,可以比较这两个基本数据类型是否相等 == 如
实现单例模式:
//实现单例模式 //单例模式的要领: //1)构造方法私有化; //2)对外提供一个公开的静态的获取当前类型的对象的方法 //3)提供一个当前类型的静态变量 /*编译不通过(构造方法私有化) Singleton singleton1 = new Singleton(); Singleton singleton2 = new Singleton(); System.out.println(singleton1 == singleton2); */ Singleton singleton1 = Singleton.getInstance(); Singleton singleton2 = Singleton.getInstance(); Singleton singleton3 = Singleton.getInstance(); System.out.println(singleton1 == singleton2);//输出 true System.out.println(singleton2 == singleton3);//输出 true
//单例模式的要领: //1)构造方法私有化; //2)对外提供一个公开的静态的获取当前类型的对象的方法 //3)提供一个当前类型的静态变量 //单例模式分两种 //1.直接创建:在类加载阶段就创建对象 //2.懒加载创建:用到对象时,才创建 public class Singleton { //静态变量 private static Singleton singleton; //将构造方法私有化 空构造(如果我们没有自定义构造方法时,系统默认会有一个空构造) private Singleton(){} //对外提供一个公开获取 Singleton对象的方法 public static Singleton getInstance(){ if (singleton == null) { singleton = new Singleton(); } return singleton; } } //饿汉式单例 public class User { //类加载时,只执行一次 private static User user = new User(); //构造方法私有 private User(){}; //对外提供方法调用 public static User getInstance(){ return user; } }