此外,构造器中的┞封个检查施加了一些不须要的限制。它不许可应用其他的类的实例作为参数,不然会直接抛错,然则问题来了,如不雅有另一个类也包含并实现了getData和getResult办法,它本来可以被ResultFormatter应用,却因为这个限制而无用武之地。
解决问题的办法就是删除构造器中的校验,并应用接口代替。我们采取这个筹划对代码进行优化:
【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践
- //接口的声明
- var resultSet =new Interface('ResultSet',['getData','getResult']);
- //修改后的筹划
- var ResultFormatter =function(resultObject){
- Interface.ensureImplements(resultObject,resultSet);
- this.resultObject=resultObject;
- }
上述代铝闼楝renderResult办法保持不变,而构造器却采取的ensureImplements办法,而不是typeof运算符。如今的┞封个构造器可以接收任何相符接口的类的实例了。
五、依附于接口的设计模式
<1>工厂模式:对象工厂所创建的具体对象会因具体情况而不合。应用接口可以确保所创建的┞封些对象可以交换应用,也就是说对象工厂可以包管其临盆出来的对象都实现了必须的办法;
<2>组合模式:如不雅不应用接口就弗成能应用这个模式,个中间思惟是可以将对象群体与其构成对象一致对待。这是经由过程接口来做到的。如不雅一向行鸭式辩型或类型检查,那么组合模式就会掉去大年夜部分意义;
<3>装潢者模式:装潢者经由过程透明地为另一个对象供给包装而发患咀用。这是经由过程实现与别的那个对象完全一致的接话柄现的。对于外界而言,一个装潢者和它所包装的对象看不出有什么差别,所以应用Interface来确保所创建的装潢者实现了必须的办法;
一、什么是接口
<4>敕令模式:代码中所有的敕令对象都有实现同一批办法(如run、ecxute、do等)经由过程应用接口,未履行这些敕令对象而创建的类可以不必知道这些对象具体是什么,只要知道他们都精确地实现了接口即可。借此可以创建出模块化程度很高的、耦合度很低的API。
【编辑推荐】
- JavaScript进阶之深刻懂得数据双向绑定
- 测试JavaScript函数的机能
- 前端面试中的常见的算法问题
- 纯前端解决跨域问题
- 暑期干货!2017年8月前端开辟者超实用干货大年夜合集
推荐阅读
【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践 据Engadget报道,科技媒体Android Police援引消息人士的话称,在本年秋季举办的新品宣布会上>>>详细阅读
本文标题:浅谈JavaScript中的接口实现
地址:http://www.17bianji.com/lsqh/36862.html
1/2 1

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