帮我看看这段代码:public interface ModelListener { public void update(); } import java.awt.Point; import java.util.ArrayList; public class Model { private ArrayList<Point> points; private ArrayList<ModelListener> listeners; public Model() { points = new ArrayList<Point>(); listeners = new ArrayList<ModelListener>(); } public void addListener(ModelListener l) { listeners.add(l); } public ArrayList<Point> getPoints() { return points; } public void addPoint(Point p) { points.add(p); notifyListeners(); // points changed so notify the listeners. } public void clearAllPoints() { points.clear(); notifyListeners(); // points changed so notify the listeners. } public void deleteLastPoint() { if(points.size() > 0) { points.remove(points.size() - 1); notifyListeners(); // points changed so notify the listeners. } } private void notifyListeners() { for(ModelListener l: listeners) { l.update(); // Tell the listener that something changed. } } public int numberOfPoints() { return points.size(); } public static void testModel() { Model m = new Model(); m.addListener(new ModelListener() { @Override public void update() { System.out.println(true + " (listener)"); } }); System.out.println(m.getPoints() == m.points); Point p1 = new Point(1, 2); Point p2 = new Point(3, 4); m.addPoint(p1); // Listener called. m.addPoint(p2); // Listener called. System.out.println(m.numberOfPoints() == 2); System.out.println(m.points.get(0) == p1); System.out.println(m.points.get(1) == p2); m.deleteLastPoint(); // Listener called. System.out.println(m.numberOfPoints() == 1); System.out.println(m.points.get(0) == p1); m.clearAllPoints(); // Listener called. System.out.println(m.numberOfPoints() == 0); m.notifyListeners(); // Listener called. } }
时间: 2024-01-07 12:06:12 浏览: 85
这段代码是一个MVC(Model-View-Controller)模式的示例,其中Model是数据模型,它存储一组点,并提供了添加、删除、清空点等操作。同时,Model还定义了一个ModelListener接口,用于通知监听器模型的变化。在Model中,有一个ArrayList存储所有的监听器,当模型的点集发生变化时,Model会通过notifyListeners()方法通知所有的监听器。
在testModel()方法中,我们可以看到如何使用Model。首先,我们创建一个Model对象m,并为其添加一个监听器。然后,我们测试m.getPoints()方法是否返回正确的结果,接着使用m.addPoint()方法添加两个点,并测试点的数量、位置等信息是否正确。接着,我们使用m.deleteLastPoint()方法删除一个点,并测试结果是否正确。最后,我们使用m.clearAllPoints()方法清空所有的点,并测试结果是否正确。在每个操作完成后,我们都可以看到监听器被调用,说明Model成功地通知了监听器。
阅读全文