问题标签 [state-pattern]
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.
java - 不理解状态模式
没有状态模式
状态模式
在第一种情况下,我们只有一个对象,但在另一种情况下,我们每次调用someMethod()
方法时都会创建新对象。
- 这是对模式的正确理解吗?
- 我怎样才能解决这个问题而不创建这么多对象?
- 关于这种模式,我还需要了解什么?
java - 具有条件状态更改的状态模式
我在理解状态模式的一个方面时遇到了一些麻烦。我了解维基百科等提供的基本示例,但是如果我的StateContext
班级正在对每个状态不同的计时器进行有条件的状态更改怎么办?
例如,假设我们的状态是A
、B
、C
和D
。我想根据基于状态的计时器更改状态。例如,在 A 停留 5 秒,在 B 停留 7 秒,在 C 停留 3 秒,在 D 停留 10 秒。
谁应该管理这个持续时间?每个州都应该知道它的持续时间吗?在这种情况下,我觉得将_duration
属性复制并粘贴到每个状态都很麻烦,并认为我的State
接口可能应该是具有该属性的抽象基类。
还是应该StateContext
管理持续时间?在这种情况下,我IsInstanceOf
对我的_state
.
php - Doctrine2 + 软删除作为状态模式
Doctrine2 文档说软删除行为应该更好地实现为状态模式,但没有提供该实现的任何示例。
如何使用状态模式实现软删除行为?
c# - 策略、状态、单例……还是它们的组合?
我是 stackoverflow 的新手,对 WPF 来说相对较新。
我已经阅读了六本重要的模式和最佳实践(以及这里的许多帖子),但似乎找不到我正在寻找的解决方案。
我的问题:WPF / .Net 4 / C# 我有一个文本处理器(类型为Editor E),可以一次加载一个 Document (类型为Document D)(存储为Editor.CurrentDocument)。几个 UI 控件绑定到Document的属性(所有依赖属性),例如Document.Title、Document.DateLastModification。
现在我希望能够切换实际的 Document 实例,而不必取消和重新挂钩所有事件处理程序。所以我猜 Editor.CurrentDocument 属性在切换其实现时必须以某种方式保持其实例。
我试图创建一个直接从 Document 继承并使用 Singleton 模式的SingleInstanceDocument类。但是后来我找不到将任何 Document 实例注入 SingleInstanceDocument 而不必在内部重新映射所有属性的方法。
我是否以某种方式被误导或错过了这里的重点?如果 SingleInstanceDocument 方法是一个可行的解决方案,有什么方法可以使用反射将所有可用的依赖属性从内部 Document 自动重新映射到外部 SingleInstanceDocument 外壳?
非常感谢!
附录:
事实证明,通过在 CurrentDocument 宿主对象上实现INotifyPropertyChanged,WPF/.NET 已经提供了此处所需的功能。因此,更改当前文档会导致 UI 相应地更新其绑定控件。我为所有的混乱感到抱歉。
domain-driven-design - 状态模式和领域驱动设计
我们经常使用简单的枚举来表示实体的状态。当我们引入很大程度上取决于状态的行为时,问题就出现了,或者状态转换必须遵守某些业务规则。
举个例子(使用枚举来表示状态):
你可以看到这个类很快就会变得非常冗长,因为我们添加了 Reject、Complete、Remove 等方法。
相反,我们可以引入状态模式,它允许我们将每个状态封装为一个对象:
这使得在状态之间转换、基于当前状态执行逻辑或在需要时添加新状态变得容易:
这种封装看起来更简洁,但给定足够多的状态,这些也可能变得非常冗长。我读了Greg Young 关于状态模式滥用的帖子,它建议改用多态性(所以我会有 ApprovedVacancy、UnapprovedVacancy 等类),但看不出这对我有什么帮助。
我应该将这种状态转换委托给域服务,还是在这种情况下我使用状态模式是否正确?
java - 使用状态模式进行字符串解析
我的编程任务的一部分需要使用状态模式解析字符串。明确要求使用状态模式,因此不允许其他选项。
示例字符串是:“更新用户过滤器userId=user3 set name=xxx ”。(粗体是关键字)。
请求如下:
在解析查询时,您应该使用状态模式。有四种状态:OPERATOR、OBJECT、FILTER 和 VALUES。
我查看了有关状态模式的示例,我想我明白了,但我无法弄清楚如何将它应用于字符串解析。
如果有人给我一些提示,我会很高兴。
java - 这个例子是否违反了好莱坞的原则“不要打电话给我们,我们打电话给你”
我是 headfirst 设计模式的读者,我注意到了这一点。
“好莱坞原则,不要叫我们,我们叫你”
这意味着高级组件告诉低级组件“不要打电话给我们,我们打电话给你”
高级组件是一个具有与其他低级组件一起定义的行为的类。
我的问题是……这个例子是否违反了不叫我们,我们叫你的原则?这也来自使用状态模式的书。
==================================================== ===================
==================================================== ===================
因为在这个例子中GumballMachine需要NoQuarterState的insertQuarterBehavior()来作为它自己的insertQuarterBehavior,所以这意味着GumballMachine类是高级组件,而NoquarterState类是低级组件。但是看看NoQuarterState类,该类还依赖于gumballMachine 的 setState()和getHasQuarterState()的insertQuarter() 行为。
他们相互依赖。通函 - 依赖关系
java - 解析字符串中的状态模式用法
状态模式在解析字符串时很有用。状态意味着工作的一部分,就像方法一样。当您从字符串中解析一些单词时,您会将状态更改为新的
这是什么意思?我真的很困惑。
我有一个格式为“OPERATOR OBJECT [FILTER] [VALUES]”的字符串,并且在解析查询时应该使用状态模式。有四种状态:OPERATOR、OBJECT、FILTER 和 VALUES"
design-patterns - 策略设计模式与状态设计模式
我正在阅读有关状态模式的链接。它看起来像策略模式吗?这两种模式之间的确切区别是什么?