觀察者模式方便與一對多的對應關系银还,當一發(fā)生變化時影響其他的所有對象粒氧,
觀察者
<pre>
public class ObserverImpl implements Observer {
private static final String TAG = "ObserverImpl";
private String name;
public ObserverImpl(String name) {
this.name = name;
}
@Override
public void update(Observable observable, Object o) {
Log.i(TAG, "update: " + name + o);
}
}
</pre>
被觀察者
<pre>
public class ObservableImpl extends Observable {
public void postNewPublication(String content) {
setChanged();
notifyObservers(content);
}
}
</pre>
使用
<pre>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ObservableImpl observable = new ObservableImpl();
for (int i = 0; i < 5; i++) {
observable.addObserver(new ObserverImpl("觀察者" + i));
}
observable.postNewPublication("下班了");
}
}
</pre>
log
<pre>
03-10 20:58:38.293 32526-32526/com.lerz.observerdemo I/ObserverImpl: update: 觀察者0下班了
03-10 20:58:38.293 32526-32526/com.lerz.observerdemo I/ObserverImpl: update: 觀察者1下班了
03-10 20:58:38.293 32526-32526/com.lerz.observerdemo I/ObserverImpl: update: 觀察者2下班了
03-10 20:58:38.293 32526-32526/com.lerz.observerdemo I/ObserverImpl: update: 觀察者3下班了
03-10 20:58:38.293 32526-32526/com.lerz.observerdemo I/ObserverImpl: update: 觀察者4下班了
</pre>