/*
* 練習問題22.4 p.563
* オブザーバーへ変化を通知するのにObserver/Observableを使用するAttributedインタフェースの実装を提供しなさい。
*/
package ch22.ex22_04;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Observable;
public class AttributedImpl extends Observable implements Attributed, Iterable<Attr>
{
protected Map<String, Attr> attrTable = new HashMap<String, Attr>();
@Override
public Iterator<Attr> iterator()
{
return attrs();
}
@Override
public void add(Attr newAttr)
{
setChanged();
notifyObservers(newAttr.getName() + " is added. ");
attrTable.put(newAttr.getName(), newAttr);
}
@Override
public Attr find(String name)
{
return attrTable.get(name);
}
@Override
public Attr remove(String name)
{
setChanged();
notifyObservers(name + " is removed. ");
return attrTable.remove(name);
}
@Override
public Iterator<Attr> attrs()
{
return attrTable.values().iterator();
}
}