我正在学习JavaScript。我的背景传统上是Java和C#。在那些环境中,我可以使用接口。很多时候,我的模式看起来像这样:
var implementers = GetForInterface<ISomeInterface>();
foreach (var implementer in implementers)
{
implementer.SomeMethod();
}
我的问题是,我如何在JavaScript中做类似的事情?我似乎无法弄清楚的主要问题是GetForInterface
部分。我不确定这个设计模式是什么。
谢谢
答案 0 :(得分:3)
Javascript中没有接口,
您正在谈论的设计模式是服务定位器,但通常这不是javascript的方式。
您可以使用某些库来执行此操作:service-locator或使用类和继承实现它自己。
一个简单的例子是保存一个从同一个类继承的实例数组,然后你就可以遍历它们(并根据需要为所有实例激活相同的方法)
答案 1 :(得分:0)
我见过的最简单的方法是使用存根并根据需要覆盖它们。例如:
function getter(obj){}
function objChecker()
{
try
{
/* Check argument length and constructor type */
if (getter.length === 1 && getter.constructor === Function)
{
console.log("Correct implementation");
return true;
}
else
{
console.log("Wrong implementation");
return false;
}
}
catch(e)
{
return NaN;
}
finally
{
console.log(JSON.stringify(getter))
}
}
getter = getter;
objChecker();
getter = [];
objChecker();
getter = {};
objChecker();
getter = RegExp;
objChecker();
getter = Function;
objChecker();
&#13;
<强>参考强>