论坛首页 Java企业应用论坛

事件处理的一丝困惑

浏览 3503 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-11-02  
事件处理,在多层体系中是一个横切的摸块,在我的DAO层体系中,放在哪一层更使我大伤脑筋,于是,我想使用java.beans.*下的类来编写事件记录的触发

于是
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的朋友了^_^
   发表时间:2004-11-02  
balance和Score是我要记录的变化字段.....
0 请登录后投票
   发表时间:2004-11-02  
当然我也可以不在setBalance和setScore方法里
抛给监听者单条字段的变化
而是另外再写个方法
propertyChange(){
pcs.firePropertyChange("ObjectXXX",map1,map2);
}
map1是old值,map2是new值
但是这样就在其他模块里还是显示的调用这个方法,而我的并不想显示的操作log ....
0 请登录后投票
   发表时间:2004-11-05  
在J2EE的系统中,基于POJO对象进行事件处理,我不认为是一个好的方式,楼上举的例子,我实在看不出有什么必要。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics