2009-12-10 38 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