作者TonyQ (骨头)
看板java
标题Re: [问题] 关於事件处理
时间Fri Feb 29 18:20:07 2008
※ 引述《PsMonkey (痞子军团团长)》之铭言:
: 好,有人写信来问:
: 用 instanceOf 的方法判别,有什麽不好吗?
instanceof
都是小写
: 所以,我就来占用版面回覆一下...
: (那个斗胆写信来问的人,麻烦出来自首一下... 免得我被误认自导自演 XD)
: 我必须要先强调,用 instanceOf 的方法,没有什麽不对
: 讲的粗俗一点:
: 只要你的程式没出问题
: 你脾气很好,後续要维护的话,不会棍声连连
: 又或是你程式技巧高超,程式码可以顶的住维护修改
: 那又有什麽对不对好不好.... [茶]
: 不如,反过来说,使用 ActionEvent.getActionCommand() 有什麽好
: --------
: 首先,让我们先考虑一件事情
: 你真的会在意是哪个(那种)Component 产生 event 吗?
: 举个常见的例子,你写一个 Editor
: 在 toolbar 跟 menu item 都会有一个「开启旧档」的功能
: 请摸摸你的 ____ 诚实地说:
: 你真的会在意到底是不是 toolbar 上的 button 被按下去吗?
: 知道了之後再去判断是不是要作开启旧档?
不需要在意是哪种Component,但是至少需要具有共同的特质。
(e.g.至少要是Component而不是Object吧)
不然还不如乾脆直接用hashcode操作不就行了?
这样才勉强接近「不用在意物件是什麽」喔XD
会这样做原因就是要兼顾可读性,
在兼顾可读性的同时还要考虑撰写上的习惯。
: 我这个懒人只想知道:
: 咪的,现在要作开启旧档了... [怒]
动作不见得要和事件(触发)结合啊,
你把动作跟事件讲一起,个人不是很欣赏。
: 以封装的概念来引申的话,了解越少细节不是越好吗?
: 直接设定、解读 action command,不是更直觉吗?
: 反过来说,如果你要用 AWTEvent.getSource()
: 那麽,你势必要知道「将会有哪些 object」产生
: 而且,在 ActionListener.actionPerformed() 当中还要能存取得到
: (不然怎麽判断是哪一个?)
: 这样子,你的 ActionListener 是不是就得跟你的 Frame 绑死在一起?
: 也许你的程式码感情都很好,喜欢绑在一起
: 我的程式码都不怎麽团结...... [被殴飞]
: 最後,自从 JDK 1.5 之後
: 不知道为啥,我看到 casting 就会一阵发毛... XD
: 好了,大概是这样...
: 上述有误导群众或是观念错误之处
: 还请各方大德不吝指教... [摆茶点]
事件是一种封装,行为是一种封装,
你会认为ActionListener会需要跟Frame(or JFrame)绑一起,
那不过是我们对子问题/子结构的解读不同罢了。
有人认为那是一个最小单位,而有人不是而已。
就如同ActionListener 里面本身就应该要具有属於 Modal层的物件
也要具有属於View层的物件,或者他本身含有一个Control层的物件,
这样他才能够兼顾所有的处理。
这是逻辑上得必须,只是我们用什麽方式包装它而已。
至於他是不是有需要独立出Modal的型或View的型,端看程式需求,
就像我们不会把所有基本资料型态的变数改写成物件一样。
你要写就写全套,不要只写半套咩。--;;
--
▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮
◥███████████◣ ╰┼╯=│=│
◥██████───────◣ *. ╯ ╯ ╯ の 物 语 .*
◥███████──────◣ ~ ◢◣ ◢◣
◥██████───────◤ ◥◤* 空白的世界.翼
*◥◤
◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂
~telnet://tony1223.no-ip.info
我真是闲着没事来演猴戏~XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.76.250
※ 编辑: TonyQ 来自: 59.115.76.250 (02/29 18:21)