加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

JS设计模式:命令模式

发布时间:2020-12-15 00:30:56 所属栏目:C语言 来源:网络整理
导读:var viewCommand = (function() { var tpl = { product : [ ' ',' {#text#} ',' ' ].join(''),title : [ ' {#title#} ',' {#tips#} ',' ',' ' ].join('') },html = ''; function formatString(str,obj) { return str.replace(/{#(w+)#}/g,function(match,
var viewCommand = (function() {
    var tpl = {
        product : [
            '
','{#text#}

','
' ].join(''),title : [ '
{#title#}','

{#tips#}

','
','' ].join('') },html = '';
function formatString(str,obj) {
    return str.replace(/{#(w+)#}/g,function(match,key) {
        return obj[key];
    });
}

var Action = {
    create : function(data,view) {
        if (data.length) {
            for (var i = 0,len = data.length; i < len; i++) {
                html += formatString(tpl[view],data[i]);
            }
        } else {
            html += formatString(tpl[view],data);
        }
    },display : function(container,data,view) {
        this.create(data,view);
        document.getElementById(container).innerHTML = html;
        html = '';
    }
}

return function excute(msg) {
    msg.param = Object.prototype.toString.call(msg.param) === "[objet Array]" ? msg.param : [msg.param];
    Action[msg.command].apply(Action,msg.param);
}

})();

解决命令发起者,命令执行者间的耦合。(也涉及了单例模式 策略模式 职责链模式)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读