设计模式:解决某一类问题的方案(模式)
单例类:只允许创建一个对象实例的类,称为单例类
单例模式:让一个类在一个程序中只能创建一个对象
eg:任务管理器(无论你点击多少次,都只能创建一个窗口)
实现流程:
1.私有化构造方法 (使用private关键字修饰成员变量)
2.声明本类类型的引用,指向本类类型的对象,被static和private共同修饰(由于构造方法被private关键字所修饰,所以在初始化时是在本类中声明,不同于通过测试类来调用构造方法初始化成员变量)
理解:被static修饰是为了将类变量从对象层级上升到类层级,也就是达到这个类中始终只有一个对象的目的,也就是不管你后续在测试类中通过调用共有的方法,都只有一个相同的空间存储对象的内容,只是创建了不同的栈内存的引用而已,但这些引用指向了相同的空间,也就是这些引用(对象)的地址全都相同,其实就是只有一个对象,只是起了不同的名字而已
3.提供共有的get方法,将成员变量也就是类对象的数值返回出去,也就是在外界只能通过get方法进行对象的创建,并且get方法通过static关键字修饰,就从对象层级上升到了类层级,在测试类中就可以通过类名来调用。
案例测试:
public class WindowDemo {
//接收唯一的一个对象
private static WindowDemo windowDemo = null;
//将构造方法设置为私有权限,在其他类中不能随便使用
private WindowDemo(){
}
//向外界提供方法,获取唯一的对象
public static WindowDemo getWindow(){
//控制生成对象数量
if(windowDemo==null){
windowDemo = new WindowDemo();
}
return windowDemo;
}
}
public class TestWindow {
public static void main(String[] args) {
//new WindowDemo();
//new WindowDemo();
WindowDemo windowDemo1 = WindowDemo.getWindow();
WindowDemo windowDemo2 = WindowDemo.getWindow();
System.out.println(windowDemo1);
System.out.println(windowDemo2);
}
}
运行结果:
地址相同,说明是同一个对象。