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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容