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

javascript设计模式【1】,接口Interface,鸭式辨型

2013-11-11 19:53 423 查看
// 接口构造函数,name为接口名,methods为字符串数组表明接口需要实现的方法
var Interface = function (name, methods)
{
if (arguments.length != 2)
{
throw Error("接口构造函数需要2个参数");
} // end if
this.name = name;
this.methods = [];
for (var i = 0, len = methods.length; i < len; ++i)
{
if (typeof methods[i] !== "string")
{
throw new TypeError("函数名应该使用字符串");
} // end if
this.methods.push(methods[i]);
} // end for
} // end Interface()

// 类静态方法,用于检查接口,如果对象不满足接口需要,抛出异常
Interface.ensureImplements = function (object/*[,Interface]* */)
{
if (arguments.length < 2)
{
throw new Error("方法需要最少两个实参,第一个为需要检查的对象,后续为多个需要检查的接口");
} // end if
for (var i = 1, len = arguments.length; i < len; ++i)
{
var item = arguments[i]; // 接口
if (item.constructor !== Interface)
{
throw TypeError("需要检查的类型必须为接口");
} // end if
for (var j = 0, methodsLen = item.methods.length; j < methodsLen; ++j)
{
var method = item.method[j];
if (!object[method] || typeof object[method] !== "function")
{
throw Error("对象没有实现:" + item.name + " 的 " + method + " 方法");
} // end if
} // end inner for
} // end for
} // end ensureImplements()


接口使用。检查对象能做什么。而不关心它是什么。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: