用于查看事件调度实现的MVC模型

时间:2009-12-10 10:57:17

标签: java model-view-controller javabeans

MVC模式希望Model将状态事件更改为View。 如果Model是一个带有setter和getter方法的简单javabean,那么这个comunication的最佳实现是什么?

2 个答案:

答案 0 :(得分:3)

在你的bean中,允许注册PropertyChangeListener,它是指定的观察者类,用于java bean的更改通知。

具有PropertyChangeListener支持的示例bean:

public class TestBean {

    private transient final List<PropertyChangeListener> listeners = new ArrayList<PropertyChangeListener>();

    private String name;

    public void addPropertyChangeListener (PropertyChangeListener listener) {
        listeners.add(listener);
    }

    public void removePropertyChangeListener (PropertyChangeListener listener) {
        listeners.remove(listener);
    }

    private void firePropertyChange (String property, Object oldValue, Object newValue) {

        if (oldValue == newValue || oldValue != null && oldValue.equals(newValue)) {
            return;
        }

        PropertyChangeEvent evt = new PropertyChangeEvent(this, property, oldValue, newValue);
        for (PropertyChangeListener listener : new ArrayList<PropertyChangeListener>(listeners)) {
            listener.propertyChange(evt);
        }
    }

    public String getName () {
        return name;
    }

    public void setName (String name) {

        firePropertyChange("name", this.name, this.name = name);
    }
}

答案 1 :(得分:1)

查看Observer Pattern以了解模型和视图之间的通信。模型应为Observable,视图应为Observer