Re: [討論] Optional operation 的使用時機?

看板java作者 (sbr)時間17年前 (2009/03/08 15:08), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/7 (看更多)
※ 引述《TonyQ (沉默是金)》之銘言: : 偏離原題所以另闢討論串. : 想討論一下 optional operation 的狀況 , : 基本上我討厭這種設計 , 所以我很少用 . : (我個人認為這已經是過度設計了.) : 因為做了某個操作後 , : 會可能會出現夢都夢不到的不支援例外 , : 要去考慮這可能性這實在是太麻煩了. : ──────────────────────────────── : 我大概就思考上歸納一下會用 optional operation 的幾個主要環境因素 , : 1.這個功能是非常普遍的 (至少佔子類別的大多數類別會用到) : -相對的碰上失敗的狀況不多 , : 可以純粹當成 RuntimeException/Error 來看. : 2.大多數時候會以超類別的面貌進行操作時. (ex. state/strategy pattern) : -有時候雖然功能可能普遍性不那麼高 , : 但是因為要以超類別進行操作 , 會將method 上提到超類別 , : 並出現部份的 optional operation 狀況, : 有點像是 template method 的 hook method. (這不是很好的例子 :p) : 3.純粹是覺得子類別有可能會用上就寫了...- -+ (這種狀況是最糟的) : ──────────────────────────────── 我想請教你,針對 J2SE core classes 中的 java.util.Collection 定義了 remove 系列的 optional operation,你認為這應該歸為上述的那一種(點)? 是否算是第二點? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.131.246

03/08 15:16, , 1F
1 因為我覺得 remove 對 Collection 來講算普遍高的
03/08 15:16, 1F
我覺得有那麼一點 2 的味道,是因為 Collection 的 add/remove 是 optional operation,也就是說最基本的 Collection 是唯讀的 object source(data source)。 那麼也可以設計成 Collection←MutableCollection, 類似: javax.swing.tree.TreeNode←javax.swing.tree.MutableTreeNode java.awt.image.Raster←java.awt.image.WritableRaster |←java.nio.channels.ReadableByteChannel java.nio.channels.ByteChannel+ |←java.nio.channels.WritableByteChannel 這一類的階層結構。 ※ 編輯: sbrhsieh 來自: 218.173.131.246 (03/08 15:49)
文章代碼(AID): #19isxaWz (java)
文章代碼(AID): #19isxaWz (java)