如果您想使用传统的设计模式方法来实现,我建议使用观察者模式
有一个侦听器用于您班级的设置字段事件
public interface FieldListener {
public void fieldValueChanged(String fieldName, Object newValue);
}
让一个类实现这个监听器(观察者)
public class SampleObserver implements FieldListener {
@Override
public void fieldValueChanged(String fieldName, Object newValue) {
System.out.println(fieldName + " - got set with value - " + newValue);
}
}
在 Observable 类(在您的情况下)中为您的侦听器提供一个占位符,MyClass
并且每当调用 set 方法时,只需触发该事件。
public class MyClass {
List<FieldListener> listeners = new ArrayList<FieldListener>(); // the placeholder for listeners
private String field1;
private String field2;
/**
* @param field1 the field1 to set
*/
public void setField1(String field1) {
fireEvent("field1", field1);
this.field1 = field1;
}
/**
* @param field2 the field2 to set
*/
public void setField2(String field2) {
fireEvent("field2", field2);
this.field2 = field2;
}
public void addListener(FieldListener l) {
if(l != null) listeners.add(l);
}
public void fireEvent(String fieldName, Object newValue) {
for(FieldListener l : listeners) {
l.fieldValueChanged(fieldName, newValue);
}
}
public static void main(String [] args) {
MyClass m = new MyClass();
m.addListener(new SampleObserver());
m.setField1("s");
m.setField2("v");
}
}