PropertyChangeSupport vs PropertyChangeListener in java

PropertyChangeSupport in java can be used in conjunction with PropertyChangeListener, and the bound property will notify all related listeners when the property value changes.

javaBean:

package com.wang.test.property;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

public class TestBean {

	protected final PropertyChangeSupport support = new PropertyChangeSupport(this);
	
	private String str;
	
	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		support.firePropertyChange("str", this.str, str);
		this.str = str;
	}
	
	public void addPropertyChangeListener(PropertyChangeListener listener) {
		support.addPropertyChangeListener(listener);
	}
	
	public void removePropertyChangeListener(PropertyChangeListener listener) {
		support.removePropertyChangeListener(listener);
	}
}

 client:

package com.wang.test.property;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

public class PropertyChangeSupportTest {

    public static void main(String[] args) {  
    	
        TestBean test = new TestBean();
        test.setStr("ddddd");
        test.addPropertyChangeListener(new PropertyChangeListener1());
        test.setStr("yyyy");
        
        //test.addPropertyChangeListener(new PropertyChangeListener2());
    	//test.setStr("hhhhhhf");
    }  
      
    public static class PropertyChangeListener1 implements PropertyChangeListener{

		@Override
		public void propertyChange(PropertyChangeEvent evt) {
			System.out.println( "1:  " + evt.getPropertyName() + "   " + evt.getNewValue() + "   " + evt.getOldValue());
			
		}
    }
    
    public static class PropertyChangeListener2 implements PropertyChangeListener{

		@Override
		public void propertyChange(PropertyChangeEvent evt) {
			System.out.println( "2:  " + evt.getPropertyName() + "   " + evt.getNewValue() + "   " + evt.getOldValue());
			
		}
    }
}

 

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326914861&siteId=291194637