- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用的 typescript 应用程序中有一个数据库类,它设置为单例,如下所示:
export default class Database {
private static instance: Database;
//Actual class logic removed
public static getInstance(): Database {
if (!Database.instance) {
Database.instance = new Database();
Database.instance.logger.debug("Creating new Database Instance");
} else {
Database.instance.logger.debug("Using existing Database Instance");
}
return Database.instance;
}
}
当我使用 import databaseService from "../services/database.service";
将模块导入另一个文件时,并使用 private database = databaseService.getInstance(); 获取实例
它按预期工作,并创建一个新实例。在同一文件中进一步尝试getInstance()
,然后使用该现有对象。
但是,如果我随后在另一个文件中执行相同的操作,它将创建数据库对象的另一个新实例。这是一个禁忌,因为最终它会扰乱数据库逻辑的工作方式。
如何将单个对象设置为在整个应用程序中共享?最好不要将对象传递到各处,但如果必须如此,那就这样吧......
最佳答案
单例类是 JavaScript 中潜在的反模式,因为没有继承的类实例可以表示为普通对象。
在类构造函数中显式实现单例模式是 Node.js 和其他模块化环境中的反模式,因为模块已经提供了单例。
它可以是:
export class Database {}
export default new Database();
导出的类对于可扩展性可能很有用,但在 TypeScript 中,它对于键入来说是必需的,因为它充当接口(interface)。
关于javascript - 如何使 Typescript 中的单例跨多个模块工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55324510/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!