单例模式
这种类型的设计模式属于创建型模式
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
目的:避免一个全局使用的对象不停的创建和注销
核心:私有构造方法
原理:因为构造方法是私有的所以在这个类之外不能通过new创建这个类的实例,这个类的实例只能在类的内部调用类私有的构造方法才能创建,只要保证类的内部只创建一个实例就可以实现。(个人理解)
懒汉式
当需要使用这个单例对象时才创建这个对象
案例:酒店管理
功能:查房(显示所有房间以及房间的租客)、入住、退房、退出
酒店类(单例类)
// 酒店类(单例模式:懒汉式)
// 全局只有一个酒店
public class Hotel {
// 酒店单例
private static Hotel hotel;
// 房间
private Room[][] rooms;
// 公开的获取这个单例的get()方法
// 懒汉式:当需要这个单例的时候才创建这个单例
public static Hotel getHotel() {
if (hotel == null) {
hotel = new Hotel();
}
return hotel;
}
// (重要,核心)私有的构造方法
private Hotel() {
init();
}
// 初始化
private void init() {
rooms = new Room[5][5];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
rooms[i][j] = new Room((i + 1) * 1000 + j + 1);
}
}
}
// 查房
public void queryRooms() {