浏览 3503 次
锁定老帖子 主题:事件处理的一丝困惑
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-11-02
于是 BaseLog: protected PropertyChangeSupport pcs; /** * * 描述:增加属性监听者 * @param listener */ public void addPropertyChangeListener (PropertyChangeListener listener) { if (pcs == null) { pcs = new PropertyChangeSupport(this); } pcs.addPropertyChangeListener(listener); } /** * * 描述:移除监听者 * @param listener */ public void removeChangeListener(PropertyChangeListener listener) { if (pcs != null) { pcs.removePropertyChangeListener(listener); } } UserUpdateDoLog:继承BaseLog private UserUpdateListener listener = new UserUpdateListener(); private long balance; private long score; public UserUpdateDoLog(){ this.addPropertyChangeListener(listener); } /** * 描述: * @return */ public long getBalance() { return balance; } /** * 描述:修改了Balance,触发记录Balance变化事件 * @param newBalance */ public void setBalance(long newBalance) { long oldBalance = this.balance; this.balance = newBalance; pcs.firePropertyChange("balance",new Long(oldBalance),new Long(balance)); } /** * 描述: * @return */ public long getScore() { return score; } /** * 描述:修改了Score,触发记录Score * @param newScore */ public void setScore(long newScore) { long oldScore = this.score; this.score = newScore; pcs.firePropertyChange("score",new Long(oldScore),new Long(score)); } 但是,问题是,属性监听器只能监听某一个属性,就象我上面在2个属性的set方法里分别写了监听方法.而我要的时在同一个操作里监听到所有变化的属性,触发记录LOG....的事件. 请教JavaEye的朋友了^_^ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-11-02
balance和Score是我要记录的变化字段.....
|
|
返回顶楼 | |
发表时间:2004-11-02
当然我也可以不在setBalance和setScore方法里
抛给监听者单条字段的变化 而是另外再写个方法 propertyChange(){ pcs.firePropertyChange("ObjectXXX",map1,map2); } map1是old值,map2是new值 但是这样就在其他模块里还是显示的调用这个方法,而我的并不想显示的操作log .... |
|
返回顶楼 | |
发表时间:2004-11-05
在J2EE的系统中,基于POJO对象进行事件处理,我不认为是一个好的方式,楼上举的例子,我实在看不出有什么必要。
|
|
返回顶楼 | |