道对方。
除了可以使用命令、调停者、模板模式改进这个不到100行的Java代码的简单程序外,还可以使用观察者(Observer)模式。这个程序使用JListData将数据传给列表并从列表中获得数据,并用LawList观察JListData的变化。
public class JListData extends AbstractListModel{
private Vector data;
public JListData(){
data=new Vector();
}
public int getSize(){
return data.size();
}
public Object getElementAt(int index){
return data.elementAt(index);
}
public void addElement(String s){
data.addElement(s);
fireIntervalAdded(this,data.size()-1,data.size());
}
public void removeElement(String s){
data.removeElement(s);
fireIntervalRemoved(this,0,data.size());
}
public void clear(){
int size=data.size();
data.clear();
fireIntervalRemoved(this,0,size);
}
}
public class JawList extends JScrollPane{
private JList listwindow;
private JListData listContents;
public JawList(){
listContents=new JListData();
listwindow=new JList(listContents);
getViewport().add(listwindow);
}
public void add(String s){
listContents.addElement(s);
}
public void remove(String s){
listCotents.removeElements(s);
}
public void clear(){
listContents.clear();
}
}
|