Re: [討論] Optional operation 的使用時機?
: 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
推
03/08 14:36, , 1F
03/08 14:36, 1F
討論串 (同標題文章)