美文网首页
《Android源码设计模式解析和实战》观察者模式

《Android源码设计模式解析和实战》观察者模式

作者: wslerz | 来源:发表于2017-03-10 21:03 被阅读0次

观察者模式方便与一对多的对应关系,当一发生变化时影响其他的所有对象,
观察者
<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>

相关文章

网友评论

      本文标题:《Android源码设计模式解析和实战》观察者模式

      本文链接:https://www.haomeiwen.com/subject/ysmogttx.html