Re: [討論] Optional operation 的使用時機?
※ 引述《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)
推
03/08 14:56, , 1F
03/08 14:56, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 7 篇):