快速业务通道

冒号和他的学生们(连载27)——接口服务 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

冒号和他的学生们(连载27)——接口服务

时间:2011-07-03 BlogJava 郑晖

27.接口服务

律己宜严,待人宜宽                     ——《洪应明·菜根谭》

叹号幡然反省:“以前我们做OOP编程时,总是专注于如何利用其他类来解决问题,而较少考虑自己设计的类对其他类的影响。”

引号翻开以前的笔记:“前面提过,OOP的世界是民主制的,所有对象都是独立而平等的公民,有权利寻求服务,也有义务提供服务。看来我们是光惦着权利而忘了义务了。”

冒号继而提出:“作为服务的提供者,最重要的是讲诚信。首先,服务要有可靠性,不能阳奉阴违——即接口必须履行它的承诺;其次,服务要有稳定性,不能朝令夕改——即接口一经公开,不得随意变更。”

句号迅即领悟:“从抽象的角度看,服务的可靠性保证了规范抽象,服务的稳定性保证了数据抽象。”

“孺子可教也!”冒号喜赞道,“相比而言,前者更为重要,但遗憾的是,只有后者才有法律保障——如果接口被废弃或其签名发生变化,固然会牵连客户,至少还可通过编译器来发现和修改;而规范只是语义上的契约,没有语法上的约束,不在编译器的监管范围之内。”

引号插言:“编译器管不着,那只有靠单元测试了。”

“这正是单元测试的主要目的。”冒号很认同,“此外,高质量的服务还要有纯粹性和完备性。Unix有一个哲学:‘一个程序只做一件事,但要做好’。用在OOP上,则是:‘一个类只提供一套服务,但要完善’。譬如,同为手机,老式的大哥大提供的服务是纯粹的,现代的智能手机则不是——除了打电话,还能摄像、听音乐、打游戏、上网等等,完全是手机与掌上电脑的结合体。又如,同为通讯工具,手机提供的服务是完备的,而BP机提供的服务是不完备的——只能接收信息,不能发送信息。”

叹号摇头晃脑:“提供的服务过多则不纯粹,过少则不完备。如此设计出的类是不是要达到‘增一分则肥,减一分则瘦’的美人标准啊?”

“编程毕竟是门实践活儿,完美无缺的设计如梦中佳人,可以追求却难以企及。”冒号笑了笑,“其实关键不在于服务数量的多寡,而在于服务的一致性和关联性。连贯一致的服务是良好的抽象与封装的结果,同时也是‘高聚合、低耦合’的保证。”

“作一个服务的提供者真不容易啊。”问号叹道,“那么,作为服务的享受者有什么讲究吗?”

逗号鼻腔里发出共鸣声:“哈,享受服务还需要讲究吗?”

“当然有。”冒号断然道,“作为服务的享受者,最重要的是讲规矩。享受人家的服务,自然得按人家的规则,否则服务将得不到保障。比如,你可以在超市的货架上任意选取商品,但不能偷偷溜进货舱去取。”

逗号辩道:“可货舱想进也进不去啊。正如合适的封装,是禁止客人进入私有接口的。”

冒号作一引喻:“我们不妨这么假设,货舱的正门挂着‘非工作人员莫入’的牌子。但是你偶然发现,通往洗手间的过道尽头正好是货舱的后门,既没有上锁,也没有挂牌。请问你会不会大摇大摆地走进去?”

逗号哑口无言。

冒号循循善诱:“超市的工作人员也许不该为图方便而开放后门,但那是管理者的事,作为客户显然不应乘虚而入。商品从货舱到货架之前可能会有装箱、拆箱、条码打印、条码扫描等操作,客户直接从货舱拿货无疑将破坏这种程序,于人于己皆无益处。同样地,作为他人代码的客户,就应按他人所设计的方式去重用,如此才

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号