• javascript设计模式之中介者模式


    /* 
     * 小游戏演示中介者模式
     * Home 按键 1
     * Guest 按键 0
     * 半分钟内看谁按下的次数多
     *
     * 参与的对象:
     *   玩家
     *   计分板
     *   中介者
     *
     * 中介者模式使对象之间松耦合,提高了可维护性
    */
    
    // 玩家
    var Player = function (name) {
        this.name = name;
        this.point = 0;
    };
    
    Player.prototype.play = function () {
        this.point += 1;
        mediator.played(); // 每次玩家按键,中介者更新计分板
    };
    
    // 计分板
    var scoreboard = {
    
        element: document.getElementById("result"), // 记录比分
    
        update: function (score) {
            var msg = "",
                i;
            for (i in score) {
                if (score.hasOwnProperty(i)) {
                    msg += '<p><strong>' + i + '</strong>: ' + score[i] + '</p>';
                }
            }
    
            this.element.innerHTML = msg;
        }
    };
    
    // 计分人(中介者)
    var mediator = {
    
        // 所有的玩家(player 对象)
        players: {},
    
        // 玩家就位
        setup: function () {
    
            var players = this.players;
            players.home = new Player("Home");
            players.guest = new Player("Guest");
        },
    
        // 计分
        played: function () {
            var players = this.players,
    
                score = {
                    Home: players.home.point,
                    Guest: players.guest.point
                };
    
            scoreboard.update(score);
        },
    
        // 游戏开始
        keypress: function (e) {
    
            e = e || window.event;
    
            if (e.which === 49) { // 按键1
                mediator.players.home.play();
                return;
            } 
    
            if (e.which === 48) {
                mediator.players.guest.play();
                return;
            }
        }
    };
    
    
    // 运行游戏
    mediator.setup();
    window.onkeypress = mediator.keypress;
    
    // 游戏在30秒内结束
    setTimeout(function () {
        window.onkeypress = null;
        alert("Game Over!");
    }, 30000);
  • 相关阅读:
    有序表的合并---顺序表实现
    有序表的合并---链表实现
    双向链表操作
    有序表的合并-用链表操作
    C语言单链表操作
    c语言顺序表操作
    c语言 取余 % 和除法 / 的应用技巧 (在取位数方面的)
    JS打印表格(HTML定义格式)
    富文本编辑器(php)
    利用formdata异步上传图片并预览图片
  • 原文地址:https://www.cnblogs.com/xiankui/p/4026577.html
Copyright © 2020-2023  润新知