[英]Java State design pattern / "substates"
我用 Java 編碼,我使用狀態設計模式,如下例: http : //onjavahell.blogspot.fr/2009/05/simple-example-of-state-design-pattern.html
然而,我得到的 UML 是這樣的:
+---------+ +---------+
| Context |--------| State |
+---------+ +---------+
|
+----------------+
| |
+---------+ +---------+
| State 1 | | State 2 |
+---------+ +---------+
|
+----------------+
| |
+----------+ +----------+
| State 1A | | State 1B |
+----------+ +----------+
我有“子狀態”。 如何編碼? 我應該將抽象類State 1
還是有其他方法? 搜索我沒有找到任何這樣的例子。
“子狀態”是什么意思? 在狀態模式中,沒有什么可以被視為“子狀態”。 “State”代表實體的狀態。 每個州都是一個州。 除非你對你想要達到的目標給出合理的解釋,否則我相信你的想法是不正確的。
只要所有狀態共享相同的基類/接口,它就會起作用。 你可能有狀態之間的繼承關系,它仍然有效,與狀態模式無關。 而且,即使你有繼承關系,它們仍然是“狀態”,而不是“子狀態”
如果沒有有關您嘗試建模的域的更多信息,一如既往有點難以說。 但是,您可能會發現主要情況:
State1A
和State1B
可以作為State1
子類。State1
選項 A 和 B 以及在State2
選項 A 和 B 中是有意義的。雖然不是常見情況,但有時會發生這種情況,這意味着您的對象實際上有兩種類型的狀態. 如何處理這在很大程度上取決於國家之間的互動; 如果它們是獨立的,那么您可以將它們建模為單獨的層次結構。 如果它們依賴於它們的行為,那么State
類又可以具有內部狀態A
和B
。正如我所說,第二種情況很少見,但在某些設計中會發生。
HTH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.