首页 > 代码库 > 算法-自实现鸭式辨型实现接口
算法-自实现鸭式辨型实现接口
#鸭式辨型实现接口 <script type="text/javascript" charset="UTF-8"> //鸭式辨型实现接口(最完美的javascript实现接口方式) //核心:一个实现接口的主要目的,检测方法,并实现接口里的方法 //优点:完全面向对象,代码实现统一,解耦 //一、接口类 Class Interface 作用:实例化N个接口 //接口类需要2个参数 //参数1:接口的名字(string) //参数2:接受方法名的集合(Array) var Interface=function(name,methods){ //判断接口的参数个数 if (arguments.length != 2){ throw new Error(‘Interface constructor must be given 2 argument!‘) } this.name=name //定义一个空数组,用于接收methods中的方法名称(string) this.methods=[] for (var i=0 ;i<methods.length;i++) { if(typeof methods[i] !== ‘string‘){ throw new Error(‘Interface method name must be string!‘) } this.methods.push(methods[i]) } } //二、准备工作 //1、实例化接口对象 var CompositeInterface=new Interface(‘CompositeInterface‘,[‘add‘,‘remove‘]) var simpleInterface=new Interface(‘simpleInterface‘,[‘update‘,‘select‘]) //2、具体实现类 var CompositeImpl=function(){} //3、实现接口的方法 CompositeImpl.prototype.add=function(obj){ console.log(‘add implement ...‘) } CompositeImpl.prototype.remove=function(obj){ console.log(‘remove implement ...‘) } CompositeImpl.prototype.update=function(obj){ console.log(‘update implement ...‘) } CompositeImpl.prototype.select=function(obj){ console.log(‘select implement ...‘) } //三、检验接口中的方法 //如果检验通过,不做任何操作,否则,抛出异常 //目的:检测方法是否存在,是否为function Interface.checkImplements=function(obj){ //判断接受的参数小于2,则传递参数失败 if(arguments.length<2){ throw new Error(‘Interface checkImplements method constructor must be given more than 2 argument!‘) //获得接口实例对象 for(var i=1;i<arguments.length;i++){ var instanceInterface=arguments[i] //判断参数是否是接口类的类型 if(instanceInterface.constructor != Interface){ throw new Error(‘Interface checkImplement method constructor\‘ argument must be Interface Class‘ ) } //循环接口实例对象里面的每一个方法 for(var j=0;j<instanceInterface.methods.length;j++){ //用一个临时变量接受每一个方法的名字(string) var methodName=instanceInterface.methods[j] //object[key]就是方法 if(!Object[methodName] || typeof Object[methodName] != ‘function‘){ throw new Error(‘method name:‘+methodName+‘ is not found!‘) } } } } } var c1=new CompositeImpl() Interface.checkImplements(c1,CompositeInterface,simpleInterface) c1.add() </script>
算法-自实现鸭式辨型实现接口
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。