您的位置:首页 > Web前端 > JavaScript

javascript接口实现

2015-10-03 09:41 507 查看
/**
* Created by lenovo on 2015/10/2.
*/
//1注释描述
/*
* interface inter(){
*   function method1();
*   function method2();
*   function method3();
* }
*
* */
//implefunc implement  inter
var implefunc =function(){};
implefunc.prototype.method1=function(){};
implefunc.prototype.method1=function(){};
implefunc.prototype.method1=function(){};
/*
* 2属性检测
*并不能检测其中的方法,只能检测接口
* interface inter1(){
*   function method1();
*   function method2();
*   function method3();
* }
*
* interface inter2(){
*   function method4();
* }
*
* */
//implefunc implement inter1,inter2
var implefunc=function(){
this.implementInterface=['inter1','inter2'];
};
implefunc.prototype.method1=function(){};
implefunc.prototype.method2=function(){};
implefunc.prototype.method3=function(){};
implefunc.prototype.method4=function(){};

function checkImpleFunc(instance){
if(!IsImplements(instance,'inter1','inter2')){
throw new Error();
}
}
function IsImplements(object){
for(var i=1;i<arguments.length;i++){
var interfaceName=arguments[i];
var interfaceFound=false;
for(var j=0;j<implementInterface.length;j++){
if(object.implementInterface[j]==interfaceName) {
interfaceFound = true;
break
}
}
if(!interfaceFound)
return false;
}
return true;
}

/*
* 3鸭式辨形法
*
* 可以完整的检测其中的方法
* */
var Interface=function(){
if(arguments.length!=2){
return new Error("the length of arguments is wrong");
}
this.name=arguments[0];
this.methods=[];
for(var i= 0,len=arguments[1].length;i<len;i++){
if(typeof arguments[1][i]!=string){
throw new Error('the argument is wrong');
}
this.methods.push(arguments[1][i]);
}
}
var CompositeInterface=new Interface('compositeInterface','add');
var FormItemInterface=new Interface('FormItemInterface','sub');
var ImplementInter=function(){};
ImplementInter.prototype.add=function(){};
ImplementInter.prototype.sub=function(){};

Interface.ensureImplements=function(object) {
if (arguments.length < 2) {
throw new Error('the argument is less than 2');
}
for (var i = 1; i < arguments.length; i++) {
var instanceInterface = arguments[i];
if (instanceInterface.constructor != Interface)
throw new Error('the arguments is not interface');
for (var j = 0; j < instanceInterface.methods.length; j++) {
var methodName = instanceInterface.methods[j];
if (!object[methodName] || typeof  object[methodName] !== 'function')
throw  new Error('the method is not found');
}
}
}
var c1=new ImplementInter();
Interface.ensureImplements(c1,CompositeInterface,FormItemInterface);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript接口