当前位置: 首页 > news >正文

猪八戒网做动漫弹幕网站如皋市建设局网站

猪八戒网做动漫弹幕网站,如皋市建设局网站,wordpress 交流,青岛网站建设微动力1 /*2 接口:提供一种说明一个对象应该有哪些方法的手段3 js中有三种方式实现接口:4 1 注释描述接口5 2 属性检测接口6 3 鸭式辨型接口7 */8 9 /*10 1 注释描述接口#xff1a; 不推荐11 优点#xff1a; 利用注解#xff0c;给出参考12 缺点#x…    1 /*2 接口:提供一种说明一个对象应该有哪些方法的手段3 js中有三种方式实现接口:4 1 注释描述接口5 2 属性检测接口6 3 鸭式辨型接口7 */8 9 /*10 1 注释描述接口 不推荐11 优点 利用注解给出参考12 缺点纯文档约束是一个假接口13 程序不能检查实现接口对象是否实现所有接口方法14 */15 16 /**17 * interface Composite{18 * function a();19 * function b();20 * }21 */22 // CompositeImpl implements Composite23 var CompositeImpl function(){24 //业务逻辑25 };26 CompositeImpl.prototype.a function(){27 //业务逻辑28 };29 CompositeImpl.prototype.b function(){30 //业务逻辑31 };32 33 34 35 36 37 38 39 /*40 2 属性检测接口41 优点能够检测实现哪些接口42 缺点没有完全脱离文档43 不能检测是否实现每个接口里的所有方法44 */45 /**46 * interface Composite{47 * function a();48 * }49 * 50 * interface FormItem(){51 * function b();52 * }53 */54 // CompositeImpl implements Composite,FormItem55 var interfacesImpl function(){56 //在实现类内部用一个数组保存要实现的方法名57 //通常这个属性名是团队中规定好的58 this.implementsInterfaces [Composite,FormItem];59 };60 CompositeImpl.prototype.a function(){61 //业务逻辑62 };63 CompositeImpl.prototype.b function(){64 //业务逻辑65 };66 67 //专门为这个实现对象写一个检测函数传入实例对象用于检查实力对象是否实现了所有接口68 function checkImplements(obj){69 //调用检查方法 obj是否实现两个接口如果没有都实现则抛出异常70 if(!isImplements(obj,Composite,FormItem)){71 throw new Error(接口没有全部实现);72 }73 //接收一个参数obj是要检查的对象74 function isImplements(obj){75 //arguments对象能够获取实际传入函数的所有参数的数组76 //传入的第0个参数是要检查的对象所以从1开始检查77 for(var i 1; i arguments.length ; i){78 //接收接口中每个接口的名字79 var interfaceName arguments[i];80 //一个标记是否实现这个接口默认没有81 var foundFlag false;82 //循环查询传入实例对象的实现接口数组 以检查是否全部实现83 for(var j 0 ;j obj.implementsInterfaces.length;j){84 //如果 实现了这个接口 就修改标记跳出循环85 if(obj.implementsInterfaces[j]interfaceName){86 foundFlag true;87 break;88 }89 }90 //如果遍历实现接口数组之后没找到 就返回false91 if(!foundFlag){92 return false;93 }94 }95 //如果都找到了 返回true96 return true;97 }98 }99 100 //使用实力对象并检测 101 var o new interfacesImpl(); 102 checkImplements(o); //不会抛出异常 因为正确实现了两个接口 103 //如果在写interfacesImpl内的implementsInterfaces列表的时候少写了那么就会在检查函数中抛出异常 104 105 106 107 108 /* 109 3 鸭式辨型法目前开发中使用的方式 110 实现思想 111 112 */ 113 114 //1 接口类 Class Interface 115 /** 116 * 接口类需要的参数 117 * 1 接口的名字 118 * 2 要实现方法名称的数组 119 */ 120 var Interface function( name , methods ){ 121 //判断参数个数 122 if(arguments.length!2){ 123 throw new Error(接口构造器参数必须是两个); 124 } 125 this.name name; 126 this.methods []; 127 for(var i 0;imethods.length;i){ 128 if( typeof methods[i] ! string ){ 129 throw new Error(接口实现的函数名称必须是字符串); 130 } 131 this.methods.push(methods[i]); 132 } 133 134 }; 135 //2 准备工作 136 // 2.1 实例化接口对象 传入接口名 和 要实现的方法数组 137 var CompositeInterface new Interface(CompositeInterface,[add,remove]); 138 var FormItemInterface new Interface(FormItemInterface,[update,select]); 139 140 // 2.2 实现接口的类 141 //CompositeImpl implementes CompositeInterface ,FormItemInterface 142 var CompositeImpl function(){ 143 144 }; 145 // 2.3 实现接口的方法 146 CompositeImpl.prototype.add function(obj){ 147 alert(add...); 148 }; 149 CompositeImpl.prototype.remove function(obj){ 150 alert(remove...); 151 }; 152 CompositeImpl.prototype.select function(obj){ 153 alert(select...); 154 }; 155 //在这里少实现一个方法 下面检测是否全部实现了接口方法 156 // CompositeImpl.prototype.update function(obj){ 157 // alert(update...); 158 // }; 159 // 实例化 实现接口的对象 160 var c new CompositeImpl(); 161 162 //3 检验接口里的方法是否全部实现 163 // 如果检验通过 继续执行;如果不通过抛出异常; 164 Interface.ensureImplements function(obj){ 165 // 如果接收到参数小于2 说明 传参出错了只传入一个参数没有传入实现的接口 166 if(arguments.length2){ 167 throw new Error(接口检查方法的参数必须多余两个); 168 } 169 //获得要见测的接口实现对象之后的参数 各个接口 170 for(var i 1,len arguments.length;ilen;i){ 171 var instanceInterface arguments[i]; //获取当前这个接口 172 //判断接收到的是不是接口的对象 如果不是 抛出异常 173 if( instanceInterface.constructor ! Interface){ 174 throw new Error(接口检测函数必须传入接口对象); 175 } 176 //检查实例化接口的对象是不是实现了接口里的所有方法 177 // 当前接口对象里的每一个方法 178 for(var j 0 ; jinstanceInterface.methods.length;j){ 179 var methodName instanceInterface.methods[j]; //接收到了字符串的方法名 180 //如果obj里面没有有methodName这个方法 或者有这个属性但是不是函数 就抛出异常 181 if(!obj[methodName] || typeof obj[methodName] ! function){ 182 throw new Error(接口方法 methodName 没有实现); 183 } 184 } 185 } 186 187 188 }; 189 //传入要检查的类和他要实现的所有接口对象 190 Interface.ensureImplements(c ,CompositeInterface ,FormItemInterface ); 191 c.add(); 192  转载于:https://www.cnblogs.com/Lin-Yi/p/7455521.html
http://www.zqtcl.cn/news/884196/

相关文章:

  • 推广思路及执行方案昆明百度seo
  • 太原公司网站建立可视化小程序开发工具
  • 怎么做网站的搜索引擎云主机有什么用
  • 淘宝客新增网站南宁百度seo优化
  • 建设厅网站合同备案在哪里网站备案本人承诺
  • 做方案的网站住房城乡建设部官网
  • 怎样在门户网站做 推广天水市建设银行官方网站
  • 温州建网站哪家强网站建设谈客户说什么
  • 网站的子域名怎么设置整站seo排名外包
  • 免费网站在哪下载苏州建设银行网站
  • 邹平 建设项目 网站公示怎样做网站卖自己的产品教程
  • 手机免费网站建设哪家公司好免费动态域名申请
  • 提升网站排名怎么提交自己的网站
  • cms网站开发phpwordpress有什么功能
  • 专业网站制作解决方案自己在家搭建服务器
  • 中小企业网站提供了什么英文营销网站建设
  • 玉环市建设工程检测中心网站网站建设服务的具体条件
  • 主机网站wampserver搭建网站
  • 建设银行网站点不进去深圳龙华区招聘网最新招聘信息
  • 网站建设公司现在还挣钱吗wordpress棋牌
  • 网站建设有什么技术自媒体平台哪个好
  • 可以建网站的软件南昌seo代理商
  • 手机网站建设宽度中小型企业网站模板
  • 网站开发需要的所有技术中信建设有限责任公司历任董事长
  • 安徽省建设干部学校网站首页做软件是什么工作
  • 图书馆网站设计方案安徽质量工程建设网站
  • 电子商务网站建设效果那个网站可以做链接
  • 怎样做投资与理财网站网页设计优秀案例分析
  • 网站制作需要学什么搜狗网页版入口
  • html源码网seo搜索优化工程师招聘