- //interface
- var Composite =new Interface('Composite',['add','remove','getName']);
- var FormItem=new Interface('FormItem',['save']);
- //class
- var Composite=function(id,method,action){
- }
- //Common Method
- function AddForm(formInstance){
- ensureImplements(formInstance,Composite,FormItem);
- //如不雅该函数没有实现指定的接口,这个函数将会报错
- }
上述代码是在方法一的基本长进行完美,在这个例子中,CompositeForm传播鼓吹本身实现了Composite和FormItem这两个接口,其做法是把这两个接口的名称参加一个implementsinterfaces的数组。显式地声明本身支撑什么接口。任何一个请求其参数属性为特定类型的函数都可以对这个属性进行检查,并在所须要的接口未在声明之中时抛掉足误。这种方法相对于上一种方法,多了一个强迫性的类型检查。然则这种办法的缺点在于它并未包管类真正地实现了自称实现的接口,只是知道它声明本身实现了这些接口。其实类是否声明本身支撑哪些接口并不重要,只要它具有这些接口中的办法久煨。鸭式辩型(像鸭子一样走路并且嘎嘎叫的就是鸭子)恰是基于如许的熟悉,它把对象实现的办法集作为断定它是不是某个类的实例的独一标准。这种技巧在检查一个类是否实现了某个接口时也可以大年夜显身手。这种办法的背后不雅点很简单:如不雅对象具有与接口定义的办法同名的所有办法,那么就可以认为它实现了这个接口。可以应用一个帮助函数来确保对象具有所有必须的办法,代码如下:
与别的两种方法不合,这种方法无需注释,其余的各个方面都是可以强迫实施的。EnsureImplements函数须要至少两个参数。第一个参数是想要检查的对象,其余的参数是被检查对象的接口。该函数检查器第一个参数代表的对象是否实现了那些接口所声明的办法,如不雅漏掉落了任何一个,就会抛错,个中会包含被漏掉的办法的有效信息。这种方法不具备自我描述性,须要一个帮助类和帮助函数来赞助实现接口检查,并且它只关怀办法名称,并不检查参数的名称、数量或类型。
四、Interface类
鄙人面的代铝闼楝对Interface类的所有办法的参数都进行了严格的┞菲握,如不雅参数没有验证经由过程,那么就会抛出异常。参加这种检查的目标就是,如不雅在履行过程中没有抛出异常,那么就可以肯假寓口获得了精确的声明和实现。
- var Interface = function(name ,methods){
- if(arguments.length!=2){
- throw new Error('2 arguments required!');
推荐阅读
【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践 据Engadget报道,科技媒体Android Police援引消息人士的话称,在本年秋季举办的新品宣布会上>>>详细阅读
本文标题:浅谈JavaScript中的接口实现
地址:http://www.17bianji.com/lsqh/36862.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示