单例模式

15 阅读1分钟

单例模式

单例模式用于限制一个类只有一个实例。

案例:

使用单例模式来实现一个登录弹窗,无论任何时候调用登录弹窗应该是同一个实例,以确保登录状态的一致性。

class LoginModal {
    private static instance: LoginModal;
​
    // 私有化构造函数,阻止外部通过new直接创建实例
    private constructor() {
        // 初始化弹窗逻辑,例如创建DOM元素等
        console.log("初始化登录弹窗...");
    }
​
    // 提供一个公有的静态方法供外部访问获取实例
    public static getInstance(): LoginModal {
        if (!LoginModal.instance) {
            LoginModal.instance = new LoginModal();
        }
        return LoginModal.instance;
    }
​
    // 显示登录弹窗的方法
    public show() {
        console.log("显示登录弹窗");
        // 实现显示弹窗的逻辑,例如设置弹窗DOM的可见性等
    }
​
    // 隐藏登录弹窗的方法
    public hide() {
        console.log("隐藏登录弹窗");
        // 实现隐藏弹窗的逻辑,例如设置弹窗DOM的不可见性等
    }
}
​
// 使用
const loginModal1 = LoginModal.getInstance();
const loginModal2 = LoginModal.getInstance();
​
console.log(loginModal1 === loginModal2);  // 输出:true,说明loginModal1和loginModal2是同一个实例
​
loginModal1.show();  // 显示登录弹窗
// 进行一些操作,比如登录操作
loginModal1.hide();  // 隐藏登录弹窗