位置: 编程技术 - 正文

面向对象的Javascript之二(接口实现介绍)(面向对象的程序设计语言是)

编辑:rootadmin
就足以说明接口在面向对象的领域中有多重要。但JS却不像其他面向对象的高级语言(C#,Java,C++等)拥有内建的接口机制,以确定一组对象和另一组对象包含相似的的特性。所幸的是JS拥有强大的灵活性(我在上文已谈过),这使得模仿接口特性又变得非常简单。那么到底是接口呢? 接口,为一些具有相似行为的类之间(可能为同一种类型,也可能为不同类型)提供统一的方法定义,使这些类之间能够很好的实现通信。 那使用接口到底有哪些好处呢?简单地说,可提高系统相似模块的重用性,使得不同类的通信更加稳固。一旦实现接口,则必须实现接口中所有的方法。对于大型的Web项目来说,使得多个复杂模块的相似功能模块,只需要提供接口便可以提供一个实现,而彼此之间不受到影响。但我们必须明确,接口也不是万能的,由于JS是弱类型语言,你并不能强制其他的团队成员严格遵循你所提供的接口,不过你可以使用代码规范和辅助类来缓解这个问题。另外,对系统性能也会造成一定的影响,应根据你的系统需求复杂度而定。由于没有内建的interface和implements关键字,下面我们来看看JS是如何模仿实现接口的。 1. 最简单也是效果最差实现接口的方式是使用注释。即在注释中使用interface来说明接口的意图。 这并没有很好的模拟接口的功能和确保Composite类确实实现了方法的集合,也没有抛出错误通知程序员问题所在,除了说明以外不起任何作用,所有的一致性都需要程序员自觉完成。但它容易实现,不需要额外的类或函数,不影响文档的大小和执行速度,注释也能很轻易的剥离,在一定程度上提高了重用性,因为提供了类的说明可以跟其他实现相同接口的类进行通信。 2. 用属性检查模拟接口。类显示声明了要实现的接口,通过属性检查是否实现了相应的接口。 在这里发现,仍然添加了注释来说明接口。不过在Composite类中添加了一个属性implementsInterfaces,说明该类必须实现那些接口。通过检查该属性来判断是否实现相应的接口,如果未实现就会抛出错误。但缺点在于你仍无法判断是否真正实现了对应的接口方法,仅仅只是"自称"实现了接口,同时也增加了相应的工作量。 3. 用"鸭式辨型"来实现接口。从属性检查实现中发现一个类是否支持所实现的接口无关紧要,只要接口中所有的方法出现在类中相应的地方,那足以说明已经实现接口了。就像"如果走路像鸭子,像鸭子嘎嘎的叫,不管它贴不贴标签说自己是鸭子,那我们认为它就是鸭子"。利用辅助类来判断一个类是否存在(实现)了相应接口中所有的方法,如果不存在则代表没有实现。 接口类 严格的类型检查并非总是必需的,在平时的Web前端开发中很少用到以上的接口机制。但当你面对一个复杂特别是拥有很多相似模块的系统时,面向接口编程将变得非常重要。看似降低了JS的灵活性,实质上却提高了类的灵活性,降低了类之间的耦合度,因为当你传入任何一个实现了相同接口的对象都能被正确的解析。那什么时候使用接口比较合适呢?对于一个大型项目来说,肯定有许多团队成员,并且项目会被拆分为更细粒度的功能模块,为了保证进度需提前利用"占位程序"(接口)来说明模块的功能或与已开发完成的模块之间通信时,提供一个统一的接口(API)显得相当必要。随着项目的不断推进,可能需求会不断的发生变动,各模块功能也会发生相应的变动,但彼此之间通信以及提供给上层模块的API始终保持不变,确保整个架构的稳定性和持久性。下面我们通过一个具体的示例来说明接口的实际应用。假设设计一个类自动检测结果对象(TestResult类)并格式化输出一个网页视图,没有使用接口的实现方式: 首先ResultFormatter类的构造函数仅仅是检查了是否为TestResult实例,却无法保证一定实现了render中的方法getDate()和getResults()。另外,随着需求的不断变动,现在有一个Weather类,包含了getDate()和getResults()方法,却因为只能检查是否为TestResult的实例而无法运行render方法,岂不是很无语呢?解决办法是移除instanceof检查并以接口代替。 可以看出render方法没有发生任何改变。改变的仅仅是添加一个接口和使用接口来进行类型检查。同时现在能够传递Weather类的实例来进行调用,当然也能传递实现了ResultSet接口的任何类的实例,使检查更加精确和宽容。随着后续对JS设计模式的推出,接口会在工厂模式、组合模式、装饰模式和命令模式中得到广泛的应用。希望大家可以细细品味接口给我们的JS模块化设计带来的益处。

推荐整理分享面向对象的Javascript之二(接口实现介绍)(面向对象的程序设计语言是),希望有所帮助,仅作参考,欢迎阅读内容。

面向对象的Javascript之二(接口实现介绍)(面向对象的程序设计语言是)

文章相关热门搜索词:面向对象的程序设计,面向对象的java程序设计,面向对象的程序设计语言是,面向对象的三个基本特征,面向对象的java,面向对象的java程序设计,面向对象的java语言,面向对象的java语言,内容如对您有帮助,希望把文章链接给更多的朋友!

面向对象的Javascript之三(封装和信息隐藏) 同时,我们知道在面向对象的高级语言中,创建包含私有成员的对象是最基本的特性之一,提供属性和方法对私有成员进行访问来隐藏内部的细节。虽

Javascript面向对象编程 Javascript的重要性使用率1、在web应用中,涉及到前端界面编程基本上都要用到javascript语言;2、Web2.0及Ajax推动了javascript语言。3、随着大量的c/s应用转向b

Javascript 面向对象编程(coolshell) 这两天有个前同事总在问我Javascript面向对象的东西,所以,索性写篇文章让他看去吧,这里这篇文章主要想从一个整体的角度来说明一下Javascript的面

标签: 面向对象的程序设计语言是

本文链接地址:https://www.jiuchutong.com/biancheng/385671.html 转载请保留说明!

上一篇:面向对象的Javascript之一(初识Javascript)(面向对象的java语言)

下一篇:面向对象的Javascript之三(封装和信息隐藏)(面向对象的三大特征)

  • 劳务费增值税专用发票税率是多少
  • 税务师都有什么科目
  • 对账结算流程
  • 什么是清算机构的资产
  • 零申报是不是什么都不用填
  • 抵扣认证的发票开红字有影响吗
  • 企业收到税收返还会计分录
  • 社会保险申报表中工资总额累计金额是什么意思
  • 做内帐和外账需要多久
  • 承兑到期没兑现怎么处理
  • 银行承兑汇票到期日后多久可以承兑
  • 企业支付宝里面的钱可以随时提到个人银行卡吗
  • 划拨土地使用权多少年
  • 被合并企业评估什么意思
  • 个人开增值税普通发票税率
  • 企业房产税如何申报缴纳
  • 企业自行出版的报刊费用可否认证抵扣?
  • 增值税发票遗失证明
  • 物流分公司怎么运作
  • 销售软件产品
  • 股权激励技术入股的最新政策
  • 坏账损失怎么核算
  • 苹果电脑快捷键删除
  • 进口缴纳的关税通过什么核算
  • 珠宝加工税率是多少
  • 商贸公司如何结算成本
  • 委托外单位加工发出的材料分录
  • 电子钥匙续费应用在哪里
  • PHP:pg_connect_poll()的用法_PostgreSQL函数
  • 前端大屏适配几寸显示器
  • 拍到国际空间站过境
  • 长期负债和应付账款
  • 工会账户必须是专用账户吗
  • git代码提交规范
  • 目标检测论文解析怎么写
  • 带息应收票据账务处理分录
  • 企业间借款利息开票税收分类编码
  • ES + Redis + MySQL,这个高可用架构设计太顶了!
  • 上年所得税费用借方有余额,怎么调整
  • 印花税怎么填申报表
  • 个税手续费返还要交企业所得税吗
  • 资产负债表该怎么填写
  • 城市维护建设税属于中央还是地方
  • 受托代销商品的代销方式有哪两种
  • 股权收购协议书实际案例
  • 固定资产出售账面价值计入什么科目
  • 收到客户回款 应收账款减少还是增多
  • 增值税年末必须要交吗
  • 开发票的时候密码超出密码区发票还能用吗?
  • 备查账包括哪些
  • 清除sql表内容
  • 通过实例认识MySQL中前缀索引的用法
  • sqlserver获取年月日
  • 用union怎么把结果加起来
  • mysql中计算两个日期之间的天数
  • Windows10安装net3.5
  • win8pe下载iso
  • windows域环境搭建
  • win7系统开机蓝屏0x0000007b
  • uefimbr安装win7
  • linux内容查找
  • wfxswtch.exe - wfxswtch是什么进程
  • win8.1怎么打开设置
  • linux系统中的用户分为哪几类
  • 任务栏图标右键
  • winxp能玩啥大型游戏
  • linux如何配置双网卡
  • python爬虫403解决方案
  • unity怎么导入材质包
  • JavaScript中的数据类型分哪为两大类?
  • java script教程
  • jquery常用的事件绑定函数有哪些
  • jquery控制css样式
  • 北京国税发票查询真伪查询
  • 加强税务工作
  • 云南国税app
  • 小规模纳税人可以用专票抵扣税吗
  • 交警认可的客货两用车型
  • 北京税务局开票系统
  • 财税〔2009〕61号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设