作者H45 (!H45)
看板java
标题Re: [讨论] Optional operation 的使用时机?
时间Sun Mar 8 14:12:09 2009
: 2.大多数时候会以超类别的面貌进行操作时. (ex. state/strategy pattern)
: -有时候虽然功能可能普遍性不那麽高 ,
: 但是因为要以超类别进行操作 , 会将method 上提到超类别 ,
: 并出现部份的 optional operation 状况,
: 有点像是 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
所有的行为都需要实作,不会有不支援的运算这种例外发生。
所以....是不是我误会了您想要表达的意思!??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.247.13
1F:推 TonyQ:我着眼的点在於某些行为在某些动作下可能会是unsupport的. 03/08 14:36