在JavaScript

时间:2015-07-18 14:26:18

标签: javascript design-patterns interface porting

我正在学习JavaScript。我的背景传统上是Java和C#。在那些环境中,我可以使用接口。很多时候,我的模式看起来像这样:

var implementers = GetForInterface<ISomeInterface>();

foreach (var implementer in implementers)
  {
  implementer.SomeMethod();
  }

我的问题是,我如何在JavaScript中做类似的事情?我似乎无法弄清楚的主要问题是GetForInterface部分。我不确定这个设计模式是什么。

谢谢

2 个答案:

答案 0 :(得分:3)

Javascript中没有接口,

您正在谈论的设计模式是服务定位器,但通常这不是javascript的方式。

您可以使用某些库来执行此操作:service-locator或使用类和继承实现它自己。

一个简单的例子是保存一个从同一个类继承的实例数组,然后你就可以遍历它们(并根据需要为所有实例激活相同的方法)

答案 1 :(得分:0)

我见过的最简单的方法是使用存根并根据需要覆盖它们。例如:

&#13;
&#13;
     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;
&#13;
&#13;

<强>参考