zoukankan      html  css  js  c++  java
  • 发布-订阅模式

      接着学习《JavaScript设计模式与开发实践》一书。

      书中用售楼处发给订阅者楼房信息短信的例子,说明了发布-订阅模式。一个发布-订阅模式,总结来说,由以下几条:

      1.首先要指定好谁充当发布者,比如售楼处;

      2.然后给发布者添加一个缓存列表,用于存放回调函数以便通知订阅者;

      3.最后发布消息的时候,发布者会遍历这个缓存列表,依次触发里面存放的订阅者回调函数。

      

        var salesOffices = {};
        salesOffices.clientList = [];
        salesOffices.listen = function (fn) {
            this.clientList.push(fn);
        };
        salesOffices.trigger = function () {
            for (var i = 0, fn; fn = this.clientList[i++];) {
                fn.apply(this, arguments);
            }
        };

       对多态的再次理解。

      多态:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果。

      要实现对象的多态性,就要把不变的部分分隔出来,然后把可变的部分各自封装起来。以鸡鸭发声的那个例子讲,首先我们把不变的部分隔离出来,那就是所用的动物都会发出叫声:

            var makeSound = function (animal) {
                animal.sound();
            };

    然后把可变的部分各自封装起来,我们刚才提到的多态性实际指的是对象的多态性:

            var Duck = function () {};
            Duck.prototype.sound = function () {
                console.log('嘎嘎嘎');
            };
    
            var Chicken = function () {};
            Chicken.prototype.sound = function () {
                console.log('咯咯咯');
            };
            makeSound(new Duck());
            makeSound(new Chicken());
  • 相关阅读:
    Linux 学习 之 bash
    C++ Knowledge series 4
    Linux 下, 安装Android Studio
    Java Knowledge series 1
    C++ Knowledge series 3
    Linux,MD5
    Using ASP.Net WebAPI with Web Forms
    CSS浮动属性Float到底什么怎么回事,下面详细解释一下
    什么是CSS清除浮动?
    Jquery ajax调用webservice总结
  • 原文地址:https://www.cnblogs.com/zhansu/p/6596574.html
Copyright © 2011-2022 走看看