package edu.hebtu.movingcampus.subject.base; import java.io.Serializable; import java.util.LinkedList; import java.util.List; import android.app.Activity; import edu.hebtu.movingcampus.activity.base.Observer; import edu.hebtu.movingcampus.adapter.base.AdapterBase; /** * topic, user's single interest data collection * * @author hippo * @version 1.0 * @created 14-Nov-2013 9:13:33 AM */ public abstract class Subject implements Serializable{ /** * */ private static final long serialVersionUID = 1L; protected Boolean enable = true; protected transient List<Observer> observers = new LinkedList<Observer>(); public Subject() { } /** * * @param enable * enable * @return */ public void enable(Boolean enable) { this.enable = enable; } public abstract String getTag(); public abstract Boolean mesureChange(Activity context); public void notifyObservers(Activity context) { for (Observer o : observers) if (mesureChange(context)) o.update(); } /** * * @param observer * observer */ public Boolean registObserver(Observer observer) { for (Observer o : observers) if (o.equals(observer)) return false; observers.add(observer); return true; } /** * * @param observer * observer */ public Boolean unRegistObserver(Observer observer) { for (Observer o : observers) if (o.equals(observer)) { observers.remove(observer); return true; } return false; } }