问题标签 [monostate]

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 投票
5 回答
7325 浏览

c++ - 具有静态成员的类与单例

只有静态成员的类不是一种单例设计模式吗?上这样的课有什么缺点吗?详细的解释会有所帮助。

0 投票
1 回答
281 浏览

c# - 这是一个合适的 MonoState 设计吗?

我有一个Person班级,并且基于我在这篇文章中收到的一些帮助。

MonoState、Singleton 或派生形式:CRUD 应用程序的最佳方法?

我有一CurrentPerson堂课(??)它,我通过它访问数据。

我想我理解这应该如何工作,但似乎我做得不太对。

问题:

  1. 对于初学者来说,Person它的所有成员变量不应该是私有的吗?

  2. 为什么Person在声明时是CurrentPerson静态的?是对的吗?

  3. Person实际上有子对象Address,EnrollmentCaseNote. 我如何合并它们?一个CurrentEnrollment包装Enrollment

作为一门应用科学,我对 OOP 相当陌生,因此其中一些概念对我来说很难想象。

代码很长,请见谅。



PS 如果 Daniel Brückner 碰巧读到了这篇文章,请不要冒犯,因为我不是在猜测你的答案;我只需要对某些项目进行更深入的说明,以便正确理解单态在我的应用程序中的使用。

0 投票
2 回答
1244 浏览

python - 带有 Monostate __new__ 的 Python 弃用警告——有人可以解释为什么吗?

我有一个使用 Python 2.6 的基本 Monostate。

这很高兴给了我以下弃用警告..

经过一番谷歌搜索,我发现这是附加到Bug #1683368。我不明白这是什么意思。它抱怨以下行

这似乎没问题。有人可以用外行的方式解释为什么这是一个问题。我知道“这与其他内置程序不一致,例如列表”,但我不确定我理解为什么。有人会解释这个告诉我正确的方法吗?

谢谢

0 投票
1 回答
335 浏览

ruby - Ruby 中的单例模式与单态模式

假设一个类需要加载一个外部库,该库需要一些时间来加载,因此应该只加载一次。对此的两个自然解决方案是使用单例模式或单态模式。在 Ruby 的这个特定上下文中,这些解决方案中的任何一个有什么优势吗?

例如:

相对:

由于第二种语法更简洁,在 Ruby 中使用 Singleton 有什么好处吗?

0 投票
1 回答
159 浏览

polymer - 聚合物单态图案元素未升级

我在使用 Polymer 0.5.2 的 Firefox 35 中遇到单态模式的问题。我的元素如下所示:

在 Chrome 中,ready我可以看到 store 对象的各种属性,但在 Firefox 上,这些属性从未定义(即使在应用程序完成加载很久之后)。

任何想法为什么?

我尝试过的事情:

  • 确保tracer-storetracer-globals.
0 投票
1 回答
23 浏览

actionscript-3 - AS3 访问 Monostate 实例子级为空

我有一个 Main 实例,我应该可以在任何地方访问它。如果我想访问级别上的变量,我应该能够:

_root.level.my_value

但是,当我在地图中调用 _root.level 时,.level 显示为 null。

Main.as(类文档)

水平.as

0 投票
2 回答
532 浏览

c++ - 如何防止 C++ 编译器创建任何默认类成员?

我正在设计一些类来访问和控制微控制器的外围设备(adc、端口、usart 等)。该设备只有几个(在某些情况下只有一个)每个外围设备的实例,因此我决定将每个外围设备表示为一个单态类。我的一个类的定义和用法是这样的:

usart.h

main1.cpp

但是上面定义 usart 类的方式并没有禁止用户做这样的事情:

main2.cpp

我知道从 C++11 开始我可以使用delete关键字来防止编译器创建默认构造函数和函数,但我不知道编译器创建的这些默认值到底是什么。有复制构造函数、复制赋值、移动语义重载等。我需要在我的类上放置多少个delete (以及在哪些函数和构造函数中)?

更新:我知道我可以(也许应该)使用命名空间而不是类,但恐怕以后我需要将这些类(或命名空间)作为模板参数传递。AFAIK 不可能使用命名空间作为模板参数,因为我选择使用具有静态成员的类而不是命名空间。

0 投票
2 回答
118 浏览

c++ - 在 C++ 中为单态类/静态成员管理析构函数中的资源是一个坏主意吗?

我正在尝试实现管理一些 std::thread 的单态类。线程一直在运行,直到标志变为等于 false。标志更改为 false 后 - 线程停止。但看起来我必须明确调用停止方法。在析构函数中调用它会给我带来运行时错误(在 GCC 4.8 for ARM、GCC 4.9 for x86_64 和 MSVC 2017 上测试)。我是对的,这种行为是由于

“类的静态成员与类的对象不相关:它们是具有静态存储持续时间的独立对象或在命名空间范围内定义的常规函数​​,在程序中只有一次。”

所以省略了析构函数调用?

代码示例:

将 std::async 与 std::feature 一起使用会产生相同的结果但没有错误。线程只是继续运行。

附言


使类非单态可以解决运行时错误,但给我留下了这个问题。对于单态类/静态成员来说,管理资源是一种不好的做法吗?

0 投票
1 回答
2592 浏览

c++ - 我应该使用什么来代替 void 作为变体中的替代类型之一?

我想要一个变体,它可能包含 Foo 类型、(不相交的)Bar 类型或什么都没有。好吧,很自然,我在考虑使用std::variant<Foo, Bar, void>- 但这似乎不起作用。也就是说,您可以定义此类型,但如果您尝试实例化此类型,则会失败(GCC 8.2)。

那我用什么代替呢?某种空结构?

0 投票
3 回答
291 浏览

javascript - JavaScript 中的类与实例范围

我正在评估一种在 JavaScript 中使用称为 Monostate 的单例模式的方法。

我有一些如下代码:

但是我并没有深入理解 Class 范围与 Instance 范围之间的区别

我的意思是,如果我进行以下操作:

我总是会用 name 获得第二个实例的数据Tom,但为什么呢?