博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js的观察者模式
阅读量:7236 次
发布时间:2019-06-29

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

//声明主题对象            var Subject = function(name) {                this.name = name                this.register = []            }            Subject.prototype = {                //注册观察者                submit(observe) {                    this.register.push(observe)                    console.log('观察者' + observe.id + '订阅了本主题')                    return this                },                //观察者取关                unsubmit(observe) {                    var that = this                    this.register.map(function(name, index) {                        if (name == observe) {                            that.register.splice(index, 1)                            console.log(name.id + '取关了本主题')                        }                    })                    return this                },                //在某些特定的时候,由主题向所有的订阅者发布事件                radioOn(name, value) {                    this.register.map(rg => {                        rg[name](value)                    })                    return this                }            }                        var Observe = function(id) {                this.id = id            }            //供主题调用的事件            Observe.prototype = {                updata(msg) {                    console.log('观察者' + this.id + '更新了信息,信息为' + msg)                },                init() {                    console.log('观察者' + this.id + '进行了初始化')                },                play(type) {                    console.log('观察者' + this.id + '开始玩起了' + type)                }            }            //实例化一个主题            var subject1 = new Subject('PUBG')                        //实例化三个观察者对象            var observe1 = new Observe('张三')            var observe2 = new Observe('李四')            var observe3 = new Observe('赵六')                        subject1.submit(observe1)                    .submit(observe2)                    .radioOn('init')                    .radioOn('updata', '天命圈hhh')                    .unsubmit(observe1)                    .submit(observe3)                    .radioOn('play', subject1.name)            /*    观察者张三订阅了本主题            *     观察者李四订阅了本主题            *     观察者张三进行了初始化            *     观察者李四进行了初始化            *     观察者张三更新了信息,信息为天命圈hhh            *     观察者李四更新了信息,信息为天命圈hhh            *     张三取关了本主题            *     观察者赵六订阅了本主题            *     观察者李四开始玩起了PUBG            *     观察者赵六开始玩起了PUBG            */

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

你可能感兴趣的文章
音乐时“氪”就是这个feel 用QQ音乐倍儿爽
查看>>
418合练剑指618,猫宁要给京东一个下马威?
查看>>
apache配置文件——Order Deny,Allow
查看>>
线程池原理
查看>>
我的友情链接
查看>>
Windows To Go 和典型的 Windows 安装程序之间的区别
查看>>
编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔...
查看>>
字符串最后一个单词的长度
查看>>
redis之主从以及sentinel的创建
查看>>
有了这篇干货,还怕搞不定WEB网络问题的排查吗?
查看>>
常见计算机术语之“数据项”
查看>>
C#入门之数据类型
查看>>
java 异常 你又了解几分
查看>>
K-means
查看>>
java使用反射机制设置私有成员变量的值
查看>>
Exchange 2013 PowerShell格式化输出信息
查看>>
ELK学习1:搭建
查看>>
我的友情链接
查看>>
yum管理详解
查看>>
Java线上应用故障排查之一:高CPU占用
查看>>