2009-12-10 24 views
1

MVC模式希望模型将更改状态事件分派给查看。 如果Model是一个简单的带有setter和getter方法的javabean,那么这个通信的最佳实现是什么?MVC模型查看事件派发实现

回答

3

在您的bean中,允许注册PropertyChangeListener s,它是java beans上更改通知的指定观察者类。

实例豆用的PropertyChangeListener支持:

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); 
    } 
} 
+0

我喜欢这个答案,因为它告诉我,不仅是如何调度的情况下,又如何给听众女巫属性已被更改的报告。 – Claudio 2009-12-10 11:34:55