Home> php教程> php手册> body text

[PHP] 看博客学习观察者模式 - 陶士涵

WBOY
Release: 2016-05-20 11:39:18
Original
997 people have browsed it

具体应用场景是,当subject的某个动作需要引发一系列不同对象的动作(比如你是一个班长要去通知班里的某些人),与其一个一个的手动调用触发的方法(私下里一个一个通知),不如维护一个列表(建一个群),这个列表存有你想要调用的对象方法(想要通知的人);之后每次做的触发的时候只要轮询这个列表就好了(群发),而不用关心这个列表里有谁,只用关心想让谁加入让谁退出

PHP版:

//这个是主题 class Paper{ private $_observers=array(); public function register($obj){ $this->_observers[]=$obj; } public function start(){ if(!empty($this->_observers)){ foreach($this->_observers as $observer){ $observer->todo(); } } } } //这个是观察者 class observer{ public function todo(){ echo "我在做..."; } } $paper=new Paper(); $paper->register(new observer()); $paper->register(new observer()); $paper->start();
Copy after login

javascript版:

//这是主题 function Paper(){ this.observers=[]; this.register=function(obj){ this.observers.push(obj); } this.start=function(){ for(var i=0;ithis.observers.length;i++){ this.observers[i].todo(); } } } //这是观察者 function Observer(){ this.todo=function(){ console.log("我在做..."); } } var paper=new Paper(); paper.register(new Observer()); paper.register(new Observer()); paper.start();
Copy after login

java版:

package com.tsh.mthread; import java.util.ArrayList; import java.util.List; public class Home { public static void main(String[] args) { Paper paper=new Paper(); paper.register(new Observer()); paper.register(new Observer()); paper.start(); } //这是主题 private static class Paper{ private List observers=new ArrayList(); public void register(Observer observer){ observers.add(observer); } public void start(){ if(observers.size()!=0){ for(Observer observer:observers){ observer.todo(); } } } } //这是观察者 private static class Observer{ public void todo(){ System.out.println("我在做..."); } } }
Copy after login

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!