- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章设计API时要区分其目标用户群第八章设计API时要区分其目标用户群
设计API时要区分其目标用户群 8 第八 章 插件、客户端程序的区别: 插件:插件是一种遵循一定规范的应用程序接口编写出来的程序。很多软件都有插件,插件有无数种。例如在IE中,安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件。 客户端程序:客户服务(Customer Service),是指一种以客户为导向的价值观,它整合及管理在预先设定的最优成本——服务组合中的客户界面的所有要素。广义而言,任何能提高客户满意度的内容都属于客户服务的范围之内。 一些程序功能不仅可以直接通过界面进行操作,还可以提供相应的API,以供其他程序来调用,这样第三方程序可以发起通讯,使用相应程序的API指使它完成操作,命令执行完后,控制权返回给调用者。 XMMS的API还提供插件支持,第三方可发商可以通过注册“输出插件”来扩展XMMS的功能。它与前面说的客户端的地位完全不同。 第三方的播放场 SPI组成:是与前面说的客户端的地位完全不同。它没有让XMMS进行任何操作。但它为XMMS增加了很多功能,所以此时的插件不是前文所说的“客户端”。XMMS的这种注册插件来扩展功能的方式是SPI(Service Provider Interface)的典型应用。 Service Provider Interface 为了说明客户端API和SPI区别, Void xmms_play();Void xmms_pause(); Void xmms_add_to_list(char *); 使用Java语言来定义API的方式则完全不同。 Public class XMMS { Public void play() { doPlay(); } Public void pause() { doPause(); } Public void addToPlaylist(String file) { do addToPlaylist(file); } } 8.1 C和Java语言中如何定义API和SPI(1) C和Java语言中如何定义API和SPI(2) 在Java中声明API方式有多种。如说可使用static方法、实例方法、抽象方法、以及final方法,这些都是可以的。但编写一个SPI,情况就不同。 如果要使用C语言来为XMMS编写程序一个插件的话,必须要写一个支持回放的函数,代码如下: Void my_playbackprints(char *text) { Printf(“%s\n”,text);} Interface Playback { Public void playback(byte[] data);} Class MyCallbackPrints implements XMMS.Playback { Public void playback (byte[] data) { System.out.println(new String(data)); }} Xmms.registerPlayback(new MyCallbackPrints()); C和Java语言中如何定义API和SPI(3) 对于Java程序员,只要所编写的方法不是private、final或者static的,那么就表示该是方法支持调的,而且可以用看成是一个API。对很多程序员,甚至是教师都没有清楚地理解这一点,它也的确不是日常编码的内容。 8.2 API演进不同于SPI演进(1) 具体的演进方案则还是取决于具体的接口类型:向API中添加一些内容总是可以的,但要移除一些内容则不行。 但对于SPI,移除一些内容可以允许,但不允许添加新的内容。建立契约时,必须清楚地区分哪些是API,提供给外面调用,而哪些是SPI,用来让外部来扩展程序功能。设计时容易犯的最大错误就是将API和SPI混在一个类里。根据SPI的契约,不能添加方法,根据API的契约,也不能减少方法。 8.3 java.io.Write 这个类从JDK1.4到JDK5的演进 还需要使用try/catch/finally的方式来进行防御性编码。 Try { bufferedWrite.append(what); } catch (UnsupportedOpeartionException ex ) { bufferedWrite.write(what.toString());} 这样来调用API的确有点怪。调用一个方法竟然要写四行代码 java.io.Write 的演进(2) 假设已有一个优化过Write类,它无须将数据转换成字符串,而是直接处理以提高性能,但用户却可能无法用到这种梦寐
您可能关注的文档
最近下载
- 思想政治学科教学新论七章 思想政治学科评价论.ppt VIP
- 2025江西南昌青山湖区城市管理和综合执法局招聘工作人员10人笔试参考题库附答案解析.docx VIP
- 04S519:小型排水构筑物.pdf VIP
- GB50017钢结构设计规范.pdf VIP
- 武汉文化投资发展集团有限公司招聘5名工作人员笔试备考试题及答案解析.docx VIP
- 2023全钒液流电池可靠性评价方法.pdf VIP
- [乐高LEGO 9686动力机械]第14课 摩天轮.pdf VIP
- 英语视听说4英语视听说IV教学大纲.pdf VIP
- 基根-《全球营销(第8版)》英文教辅-第4章.pptx VIP
- 基根-《全球营销(第8版)》英文教辅-第3章.pptx VIP
文档评论(0)