博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[PHP] 看博客学习观察者模式
阅读量:6612 次
发布时间:2019-06-24

本文共 1652 字,大约阅读时间需要 5 分钟。

具体应用场景是,当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();

javascript版:

//这是主题function Paper(){    this.observers=[];    this.register=function(obj){        this.observers.push(obj);    }    this.start=function(){        for(var i=0;i

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("我在做..."); } }}

 

转载地址:http://lkaso.baihongyu.com/

你可能感兴趣的文章
header 里面的content-type
查看>>
Jmeter安装出现Not able to find Java executable or version问题解决方案
查看>>
基于神念TGAM的脑波小车(2)
查看>>
android获取系统wifi状态等
查看>>
js 设计模式
查看>>
HDU-3787(字符串模拟)
查看>>
十四、oracle 数据库管理--管理表空间和数据文件
查看>>
机器学习方法--分类、回归、聚类
查看>>
结构模式讨论
查看>>
[JLOI2011]飞行路线
查看>>
C#装箱和拆箱
查看>>
1.3:Render Pipeline and GPU Pipeline
查看>>
css清除浮动
查看>>
export与import
查看>>
PHP foreach 循环使用"&$val" 地址符“&”
查看>>
VoltDB学习笔记
查看>>
HDU_2688_Rotate
查看>>
计算n的阶乘有多少个尾随零
查看>>
ROS:kinect-on-ubuntu-with-openni(ASUS Xtion Por Live)
查看>>
css部分笔记
查看>>