问题标签 [singleton-methods]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
91 浏览

java - 在运行时从调度的作业中通过 setter 线程安全地更新单例的依赖项

我有一个基于 Spring 的 Java 应用程序,我的目标是在内存中缓存一堆对象以提高性能,并使用计划的作业定期从数据源更新该缓存。

如果我将该映射存储在单例 Spring bean 中,是否有一种线程安全的方法可以在运行时更新该映射而不使访问/服务方法同步?是否可以在调用时对单例对象执行不同步的临时方法块setMap(myNewMap)?有必要吗?

0 投票
0 回答
33 浏览

objective-c - 在单例类中有额外的静态方法可以吗?

我用方法编写了一个单例类(在objective-C中):

所以要使用这个我必须打电话[[MyClass sharedInstance] getAllFeedItems];

现在,如果我定义一个静态方法,而不是那样:

进而实现:

所以现在我可以简单地使用:[MyClass getFeedItems];。这样做有什么不对吗?它会引起任何问题还是编码习惯不好?对我来说,它只是让函数调用更容易。

0 投票
1 回答
683 浏览

node.js - 如果导出的模块函数被调用两次,则抛出错误

我有一个导出函数的 Node.js 模块:

我希望在这里使用单例模式,但无需大惊小怪。这是一个库,我的库代码可能会不小心多次调用这个函数,但是我需要依赖用户来定义代码,所以我不能保证他们会实现一个正确的单例模式.

如果导出的函数被多次调用,是否有一个好的模式可以用来抛出错误?

我在想这样的事情:

明确地说,以下内容并不好:

对于一些可能就足够的用例,但出于几个原因,我希望取消标准的单例代码。

我不认为monkeypatching require 函数会对此有所帮助,但也许。

现在我加载这样一个模块的代码是这样的:

问题是我可以在我的代码库中的其他地方调用

再次。代码库越来越大,我想快速失败。

在我看来,最好的办法是重新定义 fn,一旦它第一次被调用。

(1) 我必须将局部变量 fn 设置为类似

更重要的是(2)

我必须将 module.exports 值设置为

希望这有点道理

0 投票
2 回答
152 浏览

java - Java - 无限循环单例类方法调用

我有一个关于单例类的问题。当我调用方法 next() 时,我希望 mProcessIndex 会增加,但实际上不会增加​​,因此会导致 stackoverflow 错误。那么,问题是修改 mProcessIndex 值的正确方法是什么?

下面的代码

0 投票
1 回答
48 浏览

ruby - 在 Fixnum 的实例上定义方法

我可以在这样的实例上定义一个方法:

尝试与 a 类似的东西Fixnum不起作用:

这是什么原因?

我知道这是我永远不应该做的事情。我只是想知道为什么这不像我预期的那样工作。

0 投票
1 回答
768 浏览

c++ - 使用静态函数访问单例

考虑我有一个单例类Foo。这里的问题不是关于实现单例习语的方式,那么我就不明确了。我有类似的东西:

然后,在我看来,经典的称呼方式如下:

总是不得不写Foo::getInstance()来访问实例并执行预期的任务是很烦人的。那么我的问题如下:作为静态函数的重复函数如何,保持单例机制,但缩短访问时间?

然后,我可以用这个更短的版本来调用它:

这很常见吗?是否有充分的理由不这样做(以及为什么)?还有其他(更好的)方法来简化对单例类的调用吗?

注意:出于兼容性原因,我不使用 C++11。

0 投票
2 回答
788 浏览

ruby-on-rails - Ruby:类中实例变量的单例方法

我正在接受 ruby​​-kickstart (Josh Cheek) 挑战,即使我设法通过了所有测试,但有一件事我无法理解。

在练习中,您被要求覆盖实例变量的 << 方法。具体来说,这是您必须做的:

在 Ruby on Rails 中,当有人访问您网站上的 URL 时,您的应用程序会查看该 url,并将其映射到控制器方法以处理请求

我的老板希望能够根据正在访问的控制器方法来指定 HTML 输出的主体应该具有什么 CSS 类。我有责任提供一种方法,该方法在被调用时会返回一个可以处理请求的字符串。不过,有一些细微差别。返回的 String 必须在对象的整个生命周期中保留 方法必须能够被多次调用 返回的 String 应该知道如何添加新的类:每个类之间用空格分隔 唯一需要担心的方法是调用的是 << 方法。(加上一些其他不相关的东西)示例:

我的工作解决方案:

一切正常。但是我给出的较早的解决方案(但它没有用)如下

当有人在第二个不工作的解决方案上运行时,以下

<< 方法没有被对象的单例覆盖。我不明白为什么我必须将单例方法包装在 body_class 方法中。(请注意,在第二个解决方案中有一个 attr_accessor。

任何人都可以启发我!谢谢!

0 投票
1 回答
130 浏览

ios - 如何在 iOS 中不断更新值的主视图控制器中创建用户定义的方法?

我自己学习了目标c,没有参加任何课程。因此,有时我在编写 iOS 应用程序时会对一些小事感到困惑。这个问题可能很蹩脚,但我找不到任何解决方案,或者我无法理解解决方案。这是我的情况:

我的应用程序包含单个视图控制器(默认)。我想从加速度计、陀螺仪和磁力计获得连续值,并使用这些值使用行人航位推算 (PDR) 来估计用户位置。为此,我使用了 CoreMotion 并motionManager在头文件中创建了一个 CLMotionManager ( ) 属性。使用这个管理器,我可以检查传感器是否可用并获取它们的值,例如:

同样,我可以从陀螺仪和磁力计中获取值。IBAction按下按钮后,我在方法中获取这些值:

PDR 操作发生在我的下一个方法中:

现在,我的问题是:

1)如何从thePDROperationWith:: 方法中获得连续的PDR操作值?我在方法内部调用了这个startSensor方法,但是当我按下按钮时我只得到一次值。此外,我是否也应该在头文件中声明此方法(如在用户定义的NSObject子类中)?

2)用户定义的方法和委托方法有什么区别,比如

//a method in CLBeaconManager delegate -(void)beaconManager:(CLBeaconManager*)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { //code }?

这个委托方法(我希望我使用的是正确的术语)连续运行以在定义的CLBeaconRegion. 我怎样才能为我的目的制作这种方法?

谢谢你。

0 投票
2 回答
970 浏览

c# - ThreadStatic 的 C# 单例模式设计

我想弄清楚单例模式设计。我想为我的单例类中的每个线程创建单独的实例。所以我在下面提供了两个设计。

这是工作

它不起作用(抛出 NullReferenceException 并且未创建实例。)

我真的很想知道为什么不为第二个设计创建一个实例。有人可以解释一下吗?

0 投票
2 回答
400 浏览

java - 单例类的 Java 静态初始化中的死锁

我在 libgdx 中设计游戏,我决定将某些管理器类设为单例,因为我注意到我经常只使用一个类的一个实例,然后通过构造函数将同一个实例传递给许多其他类,这非常痛苦做。现在,我有一个管理器类,它在它的构造函数中初始化了许多其他类。我通过为每个类使用静态块初始化器来做到这一点,如下所示:

在主管理器中,我通过 getInstance 方法为每个类创建一个实例。

出现的问题是:假设我有静态单例类 Example1 和 Example2。
在 Example1 的构造函数中,我创建了一个名为:

但是因为 example2 和 example1 需要使用彼此的方法,所以在 Example2 的构造函数中我做了:

问题应该很容易看出。因为example1在等待example2完成初始化,而example2又需要example1的实例,最终通过上面的代码RunTimeException造成死锁崩溃。

仅使用两个示例类似乎很容易解决这个问题,但是当我有 6 个几乎都需要以某种方式进行通信的不同单例管理器类时,问题就变得复杂了。最简单的解决方案显然不会使用这种方法,但这需要我重写我的大部分代码。

我不知道如何在不遇到这个问题的情况下使用这种单例类方法,因为大多数类需要来自构造函数中其他类的信息才能运行。
我要从单例类的构造函数中删除所有代码,还是做其他事情?