问题标签 [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 - 没有枚举的状态模式和休眠
我在 Java 中使用 Hibernate 搜索了 State 模式的实现,并找到了几个对使用 Enums 的解决方案的引用,以便提供一种灵活的方式来向情况中添加新的 State。
我喜欢这里的解决方案,其中反射用于从保存 ConcreteState 类名称的表字段“状态”的值创建状态对象:http: //nerdboys.com/2007/06/08/state-pattern -持久性与休眠/
但是不鼓励这种解决方案,因为与保存整数值相比,在数据库中保存类型为 com.myCompany.myProject.asdasd.ConcreteState 的字符串值会浪费空间。所以我想知道是否有办法将可能的状态保存在表格中,例如:
customer_states(PK id INT,className VARCHAR)
并修改我的客户表以便对状态有一个 FK,例如:
客户(PK id INT,名称 VARCHAR,FK 状态 INT)
所以我不会使用比需要更多的磁盘空间,并且我会保持客户状态的一致性,因此很容易向情况添加新状态......但是,你将如何在你的 UserType 中实现它?
谢谢!
java - 如果我只有几个州,状态模式可能会有所帮助吗?
如果某个东西只有两到三个状态,那么使用状态模式是不是有点矫枉过正?
c# - 内部类和/或部分类是否脱离了状态设计模式的原则?
在我不断寻求掌握各种设计模式的过程中,我遇到了“状态”设计模式。
首先,让我解释一下我试图在哪里使用这种模式。我有一个表格,我想申请状态。我的程序具有三种状态:Configuration、Processing 和 ProcessingComplete。当表单更改状态时,表单的各个组件将变为启用/禁用、可见/不可见等。
根据我对状态模式的理解,所有这些更改(使组件可见/不可见、启用/禁用等)都应该发生在包含表单实例的单独类中。如果各个State 类与Form 的类分开,State 类就不能访问Form 的组件。我觉得这让我有两种选择之一:
- 将表单的组件公开
- 使 State 类成为 Form 的内部类
我觉得选项(1)是不好的形式,但我觉得选项(2)在某种程度上违反了状态模式的精神。我的另一个想法是使用选项(2)但使用部分类实现,但是我仍然觉得它违反了状态模式的精神。
我对这两种选择的感受是不公平的,还是我什至没有想到其他选择?
oop - 如何正确使用状态模式?
在我的编程经验中,我遇到了一些状态模式的实现,并且做了一些。我已经看到它们用于各种场景(主要是 UI 和解析)。问题在于,所有这些在快速开发的压力下都变成了难以维护和理解的代码块。我正在考虑重构其中之一,但我在网上找不到好的资源。网上有很多简单的状态模式示例,但我需要一些更深入的资源。
所以我正在寻找:
- 实现状态模式时的常见陷阱示例以及如何避免它们,
- 正确完成状态模式的真实示例(例如在某些开源项目/框架中)
- 也欢迎使用状态模式的个人经验
感谢您的时间
design-patterns - 状态模式是否准确地代表了方法?
我从State 模式的典型实现中收集到的是:
问题: 表示一个对象O,其行为根据其当前状态而改变。
解决方案:
1. 让对象O中的另一个对象S表示状态
2. 对象S将调用O的相应操作
3. 对象S将决定对象O的下一个状态
我关心的主要是#3
. 状态转换表基本上分布在所有状态中。我已经看到这些解决方案变得非常繁琐,难以快速管理。这些状态不是指标,而是包含太多关于状态机的信息。
即使#2
困扰我,我想这是相当合理的(摩尔机器。)我看到的唯一问题出现在错误修复/调试期间:代码导航/理解变得困难,直到将所有状态映射提交到内存。
下面的实现会更精确吗?
将状态表示为枚举,对象根据枚举所持有的值决定动作。它们位于一个表(δ,状态转换函数)中,该state transitions
表是当前状态到下一个状态的映射。这state transition table
也包含要执行的操作(Mealy machine)
uml - 具有不同保护条件的状态转换
在状态模式中这是如何建模的?
当当前状态为 A 时,触发器 X 上的状态 A 到状态 B 和条件 C1
当当前状态为 A 时,触发器 X 和条件 C2 上的状态 A 到状态 C
这通常是如何完成的?我有很多可能需要实施的警戒条件。
c# - 使用状态模式时业务逻辑在哪里?
它是包装器对象吗?还是状态对象本身?
我可以看看一些例子吗?
design-patterns - 为什么是代理模式是结构模式,为什么是状态模式是行为模式?
为什么代理模式是结构模式,为什么状态模式是行为模式。确定新模式应被视为结构性还是行为性的标准是什么?
c# - 状态设计模式用户界面
我正在学习状态设计模式。我正在使用 C# ASP.Net(不确定语言是否相关)。
基本上,我的对象具有状态 A、B 和 C,以及在不同状态之间移动它的操作ActionAToB
:ActionBtoA
和ActionAtoC
.
我想要做的是将这个对象绑定到屏幕上,并让按钮触发这些操作,但问题是:我如何只显示与对象所在状态相关的按钮,并在状态时显示/隐藏按钮变化?
我正在寻找与状态模式相匹配的优雅解决方案,或者任何可以使 UI 易于维护的建议。