• 命令模式和外观模式


    命令模式,英文名:Command模式。

    直接用例子来说明这个模式:

    (function(){
    	var carManager = {
    		requestInfo : function(model, id){
    
    		},
    		buyVehicle: function(model, id){
    
    		}
    	};
         ...... })()

    在上面的代码中,我们定义了一个名为carManager的对象,我们可以通过carManager对象调用它的两个方法。

    但是通过命令模式,我们可以这样来调用carManager对象中的方法。

    carManager.execute("buyVehicle", "chaojidan", "01");

    carManager.execute("requestInfo", "chaojidan", "01");

    要实现这种方式的调用,我们需要给carManager添加execute方法,此方法就是把carManager对象中的所有方法进行了抽象处理,变成了调用carManager对象方法的统一接口。

    carManager.execute = function(name){
    	return carManager[name] && carManager[name].apply(carManager,[].slice.call(arguments,1));
    }
    

    这里,我们可以假设传入execute方法中的name为命令名,当调用此方法时,会执行此命令的方法。

    外观模式,英文名:Facade。

    基本概念:外观模式为更大的代码体提供了一个方便的高层次接口,能够隐藏其底层的真实复杂性。

    在jQuery等javascript库中经常可以看到。每当我们使用$.(el).css()等方法时,实际上我们是在使用外观模式。

    举个例子:

    跨浏览器的事件绑定。

    var addEvent = function(el, ev, fn){
    	if(el.addEventListener){
    		el.addEventListener(ev, fn , false);
    	}else if(el.attachEvent){
    		el.attachEvent("on" + ev, fn);
    	}else{
    		el["on"+ev] = fn;
    	}
    };
    

    这里的addEvent方法就是一个外观模式,我们只需要调用addEvent来进行事件的绑定,而它内部需要兼容其他浏览器进行的代码处理,我们不用去考虑。

    它只暴露了addEvent方法,从而将更复杂的实现隐藏起来。

    外观模式经常和模块模式一起实现,外观模式提供一个简单的api接口给开发人员调用,模块模式把具体的比较复杂的实现代码放到自己的内部的方法中。

    加油!

  • 相关阅读:
    聊聊简单又灵活的权限设计(RBAC)
    手把手搭建一个属于自己的在线 IDE
    聊一聊如何搭建高性能网站哪一些事
    一个老程序员的忠告:你这辈子输就输在以为靠技术就能生存下
    缓存提升性能的关键性手段
    python学习笔记1之-python简介及其环境安装
    聊一聊mycat数据库集群系列之双主双重实现
    mycat数据库集群系列之mycat读写分离安装配置
    mycat数据库集群系列之mysql主从同步设置
    mycat数据库集群系列之数据库多实例安装
  • 原文地址:https://www.cnblogs.com/chaojidan/p/4484418.html
Copyright © 2020-2023  润新知