繁体   English   中英

从构造函数初始化单个实例,并将其用作另一个类中的静态方法

[英]Initiate single instance from a constructor and use it as static method in another class

我在整个应用程序中使用了一类实用程序,其中包含一种格式化数字的方法

class Utils {
    static numberFormater () {
        return new Intl.NumberFormat('en-US')
    }
}

问题是,每当我调用它时,它将返回新的numberFormat实例(这会影响代码的性能)

我想创建一个实例并在每次调用此方法时使用它

为什么不简单地直接创建数字格式化程序的实例呢? 甚至不需要是静态属性:

 class Util { constructor () { this.numberFormatter = new Intl.NumberFormat('en-US'); } } const util = new Util; const formatter = util.numberFormatter; const formatter2 = util.numberFormatter; console.log(formatter1 === formatter2); 

尝试添加用于初始化numberFormater构造函数。

 class Util { constructor(locale) { this.numberFormater = new Intl.NumberFormat(locale); } static numberFormater() { return this.numberFormatter; } } var a = new Util('en-US'); console.log(a.numberFormater.format); 

如果要创建一个实例并每次使用它,可以使用Singleton模式

单例设计模式解决了以下问题:

  1. 如何确保一个类只有一个实例?
  2. 如何轻松访问类的唯一实例?
  3. 类如何控制其实例化?
  4. 如何限制一个类的实例数?

您可以阅读有关模式和javascript的更多信息:

  1. ES6中的单例模式
  2. 单例模式与示例
  3. JavaScript设计模式:单例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM