1
5
我认为 打开() , , 等应该是私有/受保护的方法。公共接口应该是 doTheWash(清洗模式) |
2
15
我会有一个“高水平”
起草一份 State Transition Diagram 所有你需要的州,包括(每个州)
您可能需要也可能不需要进入/退出条件(例如,在某些情况下,您可以通过进入/退出操作强制条件)。不过,出于安全考虑,有些情况可能是好的(例如,从“待机”状态退出或进入“危险”状态,如甩干)
你也创造了
同样,您可能不需要所有这些,并且许多转换将只指定“from”和“to”状态。
在这两种情况下,试着保持每一个
很明显,在这一点上,你可以做一个相当通用的
然后您可以请求转换,从 在内部 状态(即,一个特定的状态可以知道它何时结束,并知道下一个状态)或者您可以有一个控制状态转换的外部类(每个状态都非常简单,只考虑它自己的操作,外部类决定转换的顺序和时间)。 根据我的经验,最好将每个动作的顺序/计时的高级逻辑与对某些硬件事件的反应的低级逻辑分开(例如,当水位达到时,从“填充”状态过渡出来)。 不过,这是一个非常通用的设计,你可以通过多种不同的方式实现完全相同的功能——很少有 |
3
1
大多数西方洗衣机都使用定时器来在一个周期和另一个周期之间移动。这个计时器可以看作某种状态机。然而,重要的是要认识到,wasching机器是自己运行的,而不是用户。用户设置初始模式,然后继续其业务。 因此,在内部,可能有Wash、Rinse、Spin私有函数,实际的接口是SetCycle()和Start()以及Stop()。你也可能有一些额外的属性,如水位,搅拌速度,水温等。。。 开始使时间前进,一段时间后进入下一个状态,直到最后完成。 |
4
1
控制器 程序 . 对于旧的和简单的机器,程序和控制器被集成到一个相当复杂的旋钮中,现代的和更昂贵的机器有一台计算机。 无论哪种情况,机器都有附加的子系统和控制器 通知 执行某些操作的子系统,如 把门锁上 , 把水加热到40度°C 旋转鼓 控制器本身知道序列,这是相当线性和定时器为基础的旧机器或复杂的现代系统,改变了基于传感器数据的序列。但在这两种情况下,它都会执行一系列命令,通知传感器和参与者。 如果你从这个角度看洗涤系统,你可能想利用 控制器内部的模式,用于模拟清洗程序和 观察员 通知子系统的模式(如: |
5
0
第一个就是我要做的。
|
6
0
我甚至会看到代表们。所以对于一个特定的洗涤循环类型,起伏,轻,泡沫,经济等,我会说每个接口。
|
7
0
洗衣机应该知道如何正确地运转。可能在清洗负载之前,需要设置某些配置项(如果未设置,则使用默认值),例如什么类型的负载(亮与暗)或大小(小、中、大)。用户(另一个类)应该知道如何正确配置要运行的负载,但是对于清洗负载,洗衣机应该只需要公开一个方法,比如
或者,您仍然可以公开用于打开和关闭洗衣机的公共函数,如果
|
8
0
我的洗衣机上有两个把手。我有点搞不清楚你的情况有什么局限性。
当你“启动”一个循环时(通过转动旋钮),如果你把它转到一个循环的中间或开始,机器将开始运转。 下面是一个非常非常基本的例子,我将如何将其转换为一个类:
|
9
0
最近我一直在 功能性 Martin Fowler/JQuery链接流畅风格
代码:
|
10
0
选项A类似于手动洗衣机,而选项B类似于自动洗衣机。这两个选项对目标用户都很有用: 选择A的用户可以享受手动编程的整个过程(比如加倍洗衣循环,或教导小家伙如果你关掉机器,而它在离心循环)。 选择B的用户可以享受简单和写一个虚拟的连续剧-教你自己洗21seconds:-) |
tsp · Q: 如何在UML状态机转换中处理多个条件 7 年前 |
smwikipedia · 如何理解为ANTLR语法生成的ATN图? 7 年前 |
Mate · UNITY3D如何同时在同一个对象上制作多个动画? 7 年前 |
Karthik · 你好,我是VHDL编程新手,请帮助我解决这些错误 9 年前 |
Sean L · 使用状态机进行水平推进?[已关闭] 11 年前 |