|
具体应用场景是,当subject的某个动作需要引发一系列不同对象的动作(比如你是一个班长要去通知班里的某些人),与其一个一个的手动调用触发的方法(私下里一个一个通知),不如维护一个列表(建一个群),这个列表存有你想要调用的对象方法(想要通知的人);之后每次做的触发的时候只要轮询这个列表就好了(群发),而不用关心这个列表里有谁,只用关心想让谁加入让谁退出
PHP版:
= register(->_observers[]= (!(->(->_observers -><span style="color: #008000;">//<span style="color: #008000;">这个是观察者
<span style="color: #0000ff;">class<span style="color: #000000;"> observer{
<span style="color: #0000ff;">public <span style="color: #0000ff;">function<span style="color: #000000;"> todo(){
<span style="color: #0000ff;">echo "我在做..."<span style="color: #000000;">;
}
}
<span style="color: #800080;">$paper=<span style="color: #0000ff;">new<span style="color: #000000;"> Paper();
<span style="color: #800080;">$paper->register(<span style="color: #0000ff;">new<span style="color: #000000;"> observer());
<span style="color: #800080;">$paper->register(<span style="color: #0000ff;">new<span style="color: #000000;"> observer());
<span style="color: #800080;">$paper->start();
javascript版:
.observers=.register=.start=( i=0;i<.observers.length;i++
.todo="我在做..."<span style="color: #0000ff;">var paper=<span style="color: #0000ff;">new<span style="color: #000000;"> Paper();
paper.register(<span style="color: #0000ff;">new<span style="color: #000000;"> Observer());
paper.register(<span style="color: #0000ff;">new<span style="color: #000000;"> Observer());
paper.start();
java版:
<span style="color: #0000ff;">import<span style="color: #000000;"> java.util.ArrayList;
<span style="color: #0000ff;">import<span style="color: #000000;"> java.util.List;
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> Home {
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {
Paper paper</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> Paper();
paper.register(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Observer());
paper.register(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Observer());
paper.start();
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">这是主题</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Paper{
</span><span style="color: #0000ff;">private</span> List<Observer> observers=<span style="color: #0000ff;">new</span> ArrayList<Observer><span style="color: #000000;">();
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> register(Observer observer){
observers.add(observer);
}
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> start(){
</span><span style="color: #0000ff;">if</span>(observers.size()!=0<span style="color: #000000;">){
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(Observer observer:observers){
observer.todo();
}
}
}
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">这是观察者</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Observer{
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> todo(){
System.out.println(</span>"我在做..."<span style="color: #000000;">);
}
}
} (编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|