加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

[PHP] 看博客学习观察者模式

发布时间:2020-05-25 03:16:16 所属栏目:PHP 来源:互联网
导读:具体应用场景是,当subject的某个动作需要引发一系列不同对象的动作(比如你是一个班长要去通知班里的某些人),与其一个一个的手动调用触发的方法(私下里一个一个通知),不如维护一个列表(建一个群),这个列表存有你想要调用的对象方法(想要通知的人)

具体应用场景是,当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;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    Paper paper</span>=<span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Paper();
    paper.register(</span><span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Observer());
    paper.register(</span><span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Observer());
    paper.start();
}
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;这是主题</span>
<span style="color: #0000ff;"&gt;private</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt; Paper{
    </span><span style="color: #0000ff;"&gt;private</span> List<Observer> observers=<span style="color: #0000ff;"&gt;new</span> ArrayList<Observer><span style="color: #000000;"&gt;();
    </span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; register(Observer observer){
        observers.add(observer);
    }
    </span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; start(){
        </span><span style="color: #0000ff;"&gt;if</span>(observers.size()!=0<span style="color: #000000;"&gt;){
            </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt;(Observer observer:observers){
                observer.todo();
            }
        }
    }
}
</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;这是观察者</span>
<span style="color: #0000ff;"&gt;private</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt; Observer{
    </span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; todo(){
        System.out.println(</span>"我在做..."<span style="color: #000000;"&gt;);
    }
}

}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读