作者TonyQ (沉默是金)
看板java
标题Re: [讨论] Optional operation 的使用时机?
时间Sun Mar 8 14:48:35 2009
※ 引述《H45 (!H45)》之铭言:
: : 有点像是 template method 的 hook method. (这不是很好的例子 :p)
: 只回这段。
: 在 state pattern 设计中,一个状态类别有许多状态转移成员方法
: http://caterpillar.onlyfun.net/Gossip/DesignPattern/StatePattern.htm
: 然而,有些状态转移是没有作用的,这种情况会出现 optional operation 的影子。
: 假设现有两个状态「移动」和「静止」,两个事件「走」和「停」
: 状态为「移动」的时候,若发生「停」事件,则状态转移至「静止」
: 状态为「静止」的时候,若发生「走」事件,则状态转移至「移动」
: 然而,「移动」的时候,若发生「走」事件,则状态仍然停留在「移动」
: 状态为「静止」的时候,若发生「停」事件,状态也是不变。
: 可能,这有些像 optional operation 但又不完全是
: 或者我直说,这不是 optional operation。
: 因为 optional operation 是可以选择实作或者不实作
: 而实作又分为定义完整的行为与抛出 UnsupportedOperationException 两种。
: 但是此例状态转移却完整地定义,并不存在 optional operation
: 所有的行为都需要实作,不会有不支援的运算这种例外发生。
: 所以....是不是我误会了您想要表达的意思!??
^^ 前辈何必多礼 XDD
每次都推文之後才想起这里推文有时间限制...(汗)
我着眼的比较主要在於某些状态下某些method 可能会是不合法的.
当然你可以视为这个行为止是停在现有的状态 , 如你原文的例子 ,
但有时候这些行为是根本不应该发生 ,
就有可能会弄成 UnsupportedOperationException.
当状态的行为跟状态数量都多的时候 , 这并不是不可能的事情. :p
(当然 , 会出现这种状况时通常也是已经陷入设计泥团了就是.)
如果是严谨的 state pattern 加上考虑到容错性是不应该出现这种状况 ,
不过这里只是试着举出几个 optional operation 可能出现的状况.
主要是想探讨什麽时机跟环境会适合使用 optional operation ,
原文的 1.2.3 情境我是认为都可以不用 ,
只是举几个曾经看过使用 optional operation 的例子. @@
--
What do you want to have ? / What do you have?
从书本中,你可以发现我的各种兴趣。
从CD中,你可以了解我所喜欢的偶像明星。
或许从文字你很难以了解一个人,但从物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.78.140
※ 编辑: TonyQ 来自: 221.169.78.140 (03/08 14:49)
1F:推 H45:XDDD 我可以体会那种状态超多、事件超多的大灾难 03/08 14:56