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

本文共 1716 字,大约阅读时间需要 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("我在做..."); } }}

 

转载于:https://www.cnblogs.com/taoshihan/p/5439539.html

你可能感兴趣的文章
电池栏上弹窗
查看>>
第三章DOM
查看>>
读书笔记--SQL必知必会03--排序检索数据
查看>>
Python - 调试Python代码的方法
查看>>
活期储蓄账目管理系统
查看>>
C++程序设计(第2版)课后习题答案--第11章
查看>>
Ubuntu 12.04 安装设置gcc4.4
查看>>
爬虫笔记(十二)——浏览器伪装技术
查看>>
Kali渗透测试——利用metasploit攻击靶机WinXP SP1
查看>>
pytest自动化6:pytest.mark.parametrize装饰器--测试用例参数化
查看>>
BZOJ 2003 [Hnoi2010]Matrix 矩阵
查看>>
apply和call用法
查看>>
Hbase java api
查看>>
CentOS6.5安装配置
查看>>
[10.5模拟] dis
查看>>
修改JAVA代码,需要重启Tomcat的原因
查看>>
Mac下关于->您不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效。<-的删除...
查看>>
学习笔记之-------UIScrollView 基本用法 代理使用
查看>>
PHP array_count_values() 函数用于统计数组中所有值出现的次数。
查看>>
PHP笔记随笔
查看>>