单例模式——javascript和typescript
2023-12-13 05:49:25
概念
确保某个方法或者类只有一个是咧。而且自行实例子并向整个系统提供这个实例。
要点
- 某个方法或类只能一个;
- 必须自行创建这个实例
- 必须自行向整个系统提供这个实例。
UML
javascript 实现代码
const Singleton = (function() {
let instance;
function createInstance() {
// 在这里可以放一些初始化逻辑
return {
someMethod: function() {
// 添加单例的方法和逻辑
}
};
}
return {
getInstance: function() {
if (!instance) {
instance = createInstance();
}
return instance;
}
};
})();
// 使用单例
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // 输出 true,因为它们是同一个实例
typescript 实现代码
class Singleton {
private static instance: Singleton | null = null;
private constructor() {
// 这里可以放一些初始化逻辑
}
public static getInstance(): Singleton {
if (!Singleton.instance) {
Singleton.instance = new Proxy(new Singleton(), {
get: function(target, prop, receiver) {
if (prop === 'instance') {
return undefined; // 防止通过 instance 直接访问实例
}
return Reflect.get(target, prop, receiver);
}
});
}
return Singleton.instance as Singleton;
}
public someMethod() {
// 在这里添加单例的方法和逻辑
}
}
// 使用单例
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // 输出 true,因为它们是同一个实例
文章来源:https://blog.csdn.net/weixin_46282323/article/details/134902077
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!