class GlobalState {
constructor() {
this.isLoggedIn = false;
}
toggleLogin() {
this.isLoggedIn =!this.isLoggedIn;
return this.isLoggedIn;
}
}
// 单例创建
let globalStateInstance;
function getGlobalStateInstance() {
if (!globalStateInstance) {
globalStateInstance = new GlobalState();
}
return globalStateInstance;
}
// 使用示例
const state1 = getGlobalStateInstance();
const state2 = getGlobalStateInstance();
console.log(state1 === state2); // true,说明是同一个实例
console.log(state1.toggleLogin()); // true
console.log(state2.toggleLogin()); // false
单例模式在实际项目中的应用场景
- 全局状态管理:如上述代码,管理应用程序的全局状态,像用户登录状态、主题设置等,保证整个应用中状态的一致性。
- 日志记录:在应用中可能需要一个全局的日志记录器,单例模式可确保无论在何处记录日志,都使用同一个日志记录对象,便于统一管理日志的输出路径、格式等。
- 数据库连接池:在数据库操作频繁的应用中,创建数据库连接开销较大。使用单例模式创建一个数据库连接池,整个应用都复用这个连接池,避免频繁创建和销毁连接,提高性能。
- 缓存管理:构建一个单例的缓存对象,应用的不同部分都可以通过这个单例对象来访问和操作缓存,确保缓存的一致性和高效利用。