javascript设计模式系列(一)------接口

 

javascript虽然也是面向对象的语言,但是并没有实现像java,php这些实现了对接口、继承等这些面向对象特性的内置支持。在使用js为前端主体开发大型项目的时候,不使用设计模式来开发到后期就会觉得相当的痛苦。代码的大量冗余,逻辑之间的混乱,可维护性很差。这也是为什么js被诟病不能开发大型项目的原因。但是js是相当灵活的语言,我们可与根据他的词法作用域的性质,来模拟实现面向对象的编程。最开始我们来实现js的接口特性,这也是其他设计模式的基础。

什么是接口:

接口提供了一种用以说明一个对象应该具有哪些方法的手段。尽管它可以说明这些方法的语义,但是不规定这些这些方法的具体实现。

这里上一个PHP接口的例子:

 

结果例子就很清楚的看到,代码中InterDemo只是声明了这个接口有一个interFunc这个方法。但是这个方法怎么实现的,是在ClassDemo中来呈现的。

在javascript中模仿接口:

废话不多说,先上代码,然后再解释:

 

代码中注释已经很清楚了,这里说下几个关键的函数:

  • Interface:其实是定义一个我们所谓的接口类型。在我们项目中,js接口就是这种形式,他有两个属性:接口的名字,方法名集。以后任何时候想声明一个接口,只要实例化一个对象就可以。
  • Interface.ensureImplement:工具函数,这个是使用js来模拟接口的一个核心函数。这个函数接收两个参数:obj和inter。obj就是我们的将要使用的一个对象,inter就是我们提供来检查obj是不是满足接口定义的接口对象。只有满足才程序才会继续进行,否则会抛出错误。
  • ObjFormatter:工具函数,产生满足接口定义的对象,上面的ensureImplement就是在这里发挥作用。

使用接口的好处:

  1. 接口可以告诉程序员一个类实现了哪些方法,从而帮助其使用这个类。
  2. 接口可以稳定不同类之间的通信方式。如果事先知道了接口,在项目集成的过程中就会少初相问题。协同开发的时候,一个程序员就可以事先说明他需要一个类具有哪些特性和操作。他就可以定义一个接口,然后把他一觉给其他人,其他人可以随心所欲的编写这个类,但是这个类一定要包含我接口里定义的方法。
  3. 测试也会变得更清晰,由于js是弱类型语言,类型不匹配错误很难跟踪。但是使用接口可以把这些错误限制在对象本身范围内。

使用接口的坏处:

  1. 显而易见,对于在客户端运行的代码,系统资源消耗的增多是不是可接受的,看一看ensureImplement函数的实现,是不是有点闹心呢。
  2. 要求团队的整体水平较高。
  3. js无法强制的要求其他程序员也使用接口。想java,php这种如果定义了一个接口,当这个接口的方法没有被实现的时候,IDE会提示编译不过。但是js不一样,全凭自觉。这就又回到了第二条。

注:

主体知识来自于《javascript设计模式》这本书,添加了自己的修改与心得。

转载请注明出处:http://hi.csdn.net/duran1986

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值