import java.util.*; 

public class Model {
	ArrayList<Data> data = new ArrayList<Data>();
	ArrayList<Observer> observer = new ArrayList<Observer>();

    public Model(Data[] data) {
		for (Data d : data) {
			this.data.add(d);
		}
	}

	public Data getData(int idx) {
		return data.get(idx);
	}

	public int size() {
		return data.size();
	}

	// 用来向模型中注册观察员.
	public void registerObserver(Observer o) {
		observer.add(o);
	}
//从模型中反注册观察员
	public void removeObserver(Observer o) {
		observer.remove(o);
	}

	// 当数据改变时，由Controller调用此方法，通知各个Observer,刷新视图. 
	public void changeModel(Model model) {
		data.clear();
		for (int i = 0; i < model.size(); i++) {
			this.data.add(model.data.get(i));
		}
		dataUpdate();
	}

	private void dataUpdate() {
		for (Observer o: observer)
			o.dataUpdate(this);		
	}

}

