写一个最简单的观察者模式demo,创建观察者student类和child类分别实现Observal接口,实现update方法,定义被观察者school类,发送消息.
public class Child implements Observer {
private static final String TAG = "Child";
@Override
public void update(Observable o, Object arg) {
Log.d(TAG, "update "+arg);
}
}
public class Student implements Observer{
private static final String TAG = "Student";
@Override
public void update(Observable o, Object arg) {
Log.d(TAG, "update "+arg);
}
}
public class School extends Observable {
private List<Observer> list = new ArrayList<>();
public void addObserver(Observer observer) {
list.add(observer);
}
public void removeObserver(Observer o) {
list.remove(o);
}
public void notifyObserver(String s) {
for (int i = 0; i < list.size(); i++) {
Observer observer = list.get(i);
observer.update(this, s);
}
}
}
测试方法
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
School school = new School();
Child child = new Child();
Student student = new Student();
school.addObserver(child);
school.addObserver(student);
school.notifyObserver("今天放假");
}
}
最后来看log日志
02-22 22:48:26.242 30941-30941/? D/Child: update 今天放假
02-22 22:48:26.242 30941-30941/? D/Student: update 今天放假