Community
Participate
Working Groups
I20080609-1311 Given: package test; public class E01 { private int f1, f2; public void setF1(int f1) { this.f1 = f1; } public void setF2(int f2) { this.f2 = f2; } } Should: There should be a refactoring/source action to infer the observer pattern into this type. The result would look something like: package test; import java.util.HashSet; import java.util.Iterator; public class E01 { public interface E01Observer { void f2Set(int f2); void f1Set(int f1); } private int f1, f2; private final HashSet<E01Observer> observers; public E01() { observers= new HashSet<E01Observer>(); } public void setF1(int f1) { this.f1 = f1; for (Iterator<E01Observer> iterator = observers.iterator(); iterator.hasNext();) { E01Observer observer = iterator.next(); observer.f1Set(f1); } } public void setF2(int f2) { this.f2 = f2; for (Iterator<E01Observer> iterator = observers.iterator(); iterator.hasNext();) { E01Observer observer = iterator.next(); observer.f2Set(f2); } } public void addObserver(E01Observer observer) { observers.add(observer); } public void removeObserver(E01Observer observer) { observers.remove(observer); } }