首页 > 代码库 > 《Javascript设计模式》笔记二 接口
《Javascript设计模式》笔记二 接口
在Javascript当中模仿接口的方法有三种:注释法,属性检查法和鸭式变形法。三者结合令人满意。
1.注释法
/*interface Composite{ function add(child){}; function remove(child){}; function getChild(index){};}interface FormItem{ function save(){}}*///用注释法模仿接口var Com = function(id,method,action){}Com.prototype.add = function(child){};Com.prototype.remove = function(child){};Com.prototype.getChild = function(index){};Com.prototype.save = function(){}
注释法缺点:没有检查,也不会抛出错误,靠自觉。
注释法优点:易于实现,重用性。
2.属性检查法
/*interface Composite{ function add(child){}; function remove(child){}; function getChild(index){};}interface FormItem{ function save(){}}*///用属性检查法模仿接口var Composite = function(id,meothod,action){ this.implementsInterfaces = [‘Composite‘,‘FormItem‘];};function addForm(formInstance){ if(!implements(formInstance,‘Composite‘,‘FormItem‘)){ throw new Error(‘Object does not implement a required interface‘); }}function implements(object){ for(var i = 1; i < arguments.length; i++){ var interfaceName = arguments[i]; var interfaceFound = false; for(var j = 0; j < object.implementsInterfaces.length; j++){ if(object.implementsInterfaces[j] == interfaceName){ interfaceFound = true; break; } } if(!interfaceFound){ return false; } } return true;}
3.填鸭变型法
var Composite = new Interface(‘Composite‘,[‘add‘,‘remove‘,‘getChild‘]);var FormItem = new Interface(‘FormItem‘,[‘save‘]); var CompositeForm = function (id,method,action){ }; function addForm () { ensureImplements(formInstance,Composite,FormItem);};
《Javascript设计模式》笔记二 接口
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。