作者sbrhsieh (sbr)
看板java
标题Re: [讨论] Optional operation 的使用时机?
时间Sun Mar 8 15:08:16 2009
※ 引述《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
1F:推 TonyQ: 1 因为我觉得 remove 对 Collection 来讲算普遍高的 03/08 15:16
我觉得有那麽一点 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)