java Script 接口实现 简单实例
来源:互联网 发布:餐饮收银软件多少钱 编辑:程序博客网 时间:2024/05/17 13:11
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> <script> //创建接口:注释描述接口/属性检测接口/鸭式辨型接口 (function() { //注释描述接口实例 就是玩的文档游戏 /* interface Composite(){ function add(arg); function remove(arg); function update(arg); } */ //CompositeImpl implements Composite //使用注释写一段伪码描述 var CompositeImpl = function() {} //为了避免每次实例化类 该类中所实现的接口方法频繁实例化 需要将方法实例添加在该类的原型对象中 //此处将this作为返回值 是为了实现链式调用 CompositeImpl.prototype = { add: function(arg) { console.info("接口中add方法被实现" + arg); return this; }, remove: function(arg) { console.info("接口中remove方法被实现" + arg); return this; }, update: function(arg) { console.info("接口中update方法被实现" + arg); return this; } } //实例化当前类调用被实现的方法 var compositeImpl = new CompositeImpl(); //compositeImpl.add("add").remove("remove").update("update"); })(); (function() { //属性检测接口 就是扯淡 没有做到对方法的检测 //以文档的形式定义两个接口 /* interface Composite(){ function add(arg); function remove(arg); function update(arg); } interface FormIte(){ function select(); } * */ //CompositeImpl implements Composite,FormIte var CompositeImpl = function() { //需要在当前类的内部创建一个变量 用于存储当前类实现了那些接口 是一种规范 this.implementsInterface = ["Composite", "FormIte"]; } CompositeImpl.prototype = { add: function(arg) { console.info("接口中add方法被实现"); return this; }, remove: function(arg) { console.info("接口中remove方法被实现"); return this; }, update: function(arg) { console.info("接口中update方法被实现"); return this; }, select: function() { console.info("接口中select方法被实现"); return this; } } //检查当前实例的类中是否实现了继承接口中全部的方法 function CheckCompositeImpl(intance) { if(!IsImplements(intance,"Composite", "FormIte")) { throw new Error("当前类中没有实现全部的方法"); } } //创建一个公用具体的检测方法 function IsImplements(arg) { for(var i = 1; i < arguments.length; i++) { var interfaceName = arguments[i], interfaceFound = false; for(var j = 0; j < arg.implementsInterface.length; j++) { if(arg.implementsInterface[j] == interfaceName) { interfaceFound = true; break; }; } if(!interfaceFound) { return false; } } return true; } var compositeImpl = new CompositeImpl(); CheckCompositeImpl(compositeImpl); //compositeImpl.add(); })(); (function(){ //鸭式辨型实现接口(据说是最完美的) 核心是对方法的检查 //核心:一个类实现接口的动机就是实现接口中全部的方法 否则不叫实现 //1定义一个接口基类 让它实例化N多个接口 需要的的参数是 接口的名字 和 存储接口中方法名的数组 var Interface=function(name,methods ){ //1.判断实参的个数 if(arguments.length !=2){ throw new Error("参数不够"); } this.name=name; this.methods=[]; for(var i=0,len=methods.length;i<len;i++){ if(typeof methods[i] !=="string"){ throw new Error("方法名必须是String类型"); } this.methods.push(methods[i]); } } Interface.ensureImplements=function(object){ if(arguments.length<2){ throw new Error("参数个数不够") } for(var i=1,len=arguments.length;i<len;i++){ var interfaceName=arguments[i]; if(interfaceName.constructor !==Interface){ throw new Error("接口类型不匹配"); } for(var j=0;j<interfaceName.methods.length;j++){ var methodName=interfaceName.methods[j]; if(! object[methodName] || typeof object[methodName] !== "function"){ throw new Error("方法不存在"); } } } } var CompositeInterface=new Interface("CompositeInterface",["add","remove"]); var FormInterface=new Interface("FormInterface",["update","select"]); //2. CompositeImpl impelments CompositeInterface , FormInterface var CompositeImpl=function(){}; CompositeImpl.prototype={ add:function(){ console.info("add"); }, remove:function(){ console.info("remove"); }, update:function(){ console.info("update"); }, select:function(){ console.info("select"); } } var compositeImpl=new CompositeImpl(); Interface.ensureImplements(compositeImpl,CompositeInterface,FormInterface); compositeImpl.add(); })() </script></html>
0 0
- java Script 接口实现 简单实例
- java Script 组合模式 简单实例
- Java Iterator接口简单实例
- JAVA Script 简单学习
- java简单实现webservice接口
- Java 简单的接口实现
- java简单实现webservice接口
- java简单实现webservice接口
- java简单实现webservice接口
- WebService java实现简单实例
- Java API Script 包实例
- java--接口实现的操作实例
- html中简单的script实例
- Java基础之接口的简单实现
- java实现跨系统接口调用简单
- java调用WEBSERVICE接口简单实现
- java script 继承的实现
- Java WebService 简单实例 方式三(axis1接口调用方式)
- [Leetcode] 25. Reverse Nodes in k-Group 解题报告
- 算法---动态规划
- 循环冗余检验 (CRC) 算法原理
- Subsets, Combination, Permutation, Combination Sum
- java Script 观察者模式
- java Script 接口实现 简单实例
- QT5.7 中文汉字排序
- Erlang 测量进程执行时间和reduction
- NSSA区域处于边界引入默认路由该怎么处理呢
- 了解JVM
- Outlook 2016 在非公司电脑配置Exchange模式邮箱总结
- VB6 程序连Ora-06413解决手札
- ss 与netstat 命令查看连接常见状态
- PHP课程总结20161213