冒号和他的学生们(连载27)——接口服务 - 编程入门网
冒号和他的学生们(连载27)——接口服务时间:2011-07-03 BlogJava 郑晖27.接口服务 律己宜严,待人宜宽 ——《洪应明·菜根谭》 叹号幡然反省:“以前我们做OOP编程时,总是专注于如何利用其他类来解决问题,而较少考虑自己设计的类对其他类的影响。” 引号翻开以前的笔记:“前面提过,OOP的世界是民主制的,所有对象都是独立而平等的公民,有权利寻求服务,也有义务提供服务。看来我们是光惦着权利而忘了义务了。” 冒号继而提出:“作为服务的提供者,最重要的是讲诚信。首先,服务要有可靠性,不能阳奉阴违——即接口必须履行它的承诺;其次,服务要有稳定性,不能朝令夕改——即接口一经公开,不得随意变更。” 句号迅即领悟:“从抽象的角度看,服务的可靠性保证了规范抽象,服务的稳定性保证了数据抽象。” “孺子可教也!”冒号喜赞道,“相比而言,前者更为重要,但遗憾的是,只有后者才有法律保障——如果接口被废弃或其签名发生变化,固然会牵连客户,至少还可通过编译器来发现和修改;而规范只是语义上的契约,没有语法上的约束,不在编译器的监管范围之内。” 引号插言:“编译器管不着,那只有靠单元测试了。” “这正是单元测试的主要目的。”冒号很认同,“此外,高质量的服务还要有纯粹性和完备性。Unix有一个哲学:‘一个程序只做一件事,但要做好’。用在OOP上,则是:‘一个类只提供一套服务,但要完善’。譬如,同为手机,老式的大哥大提供的服务是纯粹的,现代的智能手机则不是——除了打电话,还能摄像、听音乐、打游戏、上网等等,完全是手机与掌上电脑的结合体。又如,同为通讯工具,手机提供的服务是完备的,而BP机提供的服务是不完备的——只能接收信息,不能发送信息。” 叹号摇头晃脑:“提供的服务过多则不纯粹,过少则不完备。如此设计出的类是不是要达到‘增一分则肥,减一分则瘦’的美人标准啊?” “编程毕竟是门实践活儿,完美无缺的设计如梦中佳人,可以追求却难以企及。”冒号笑了笑,“其实关键不在于服务数量的多寡,而在于服务的一致性和关联性。连贯一致的服务是良好的抽象与封装的结果,同时也是‘高聚合、低耦合’的保证。” “作一个服务的提供者真不容易啊。”问号叹道,“那么,作为服务的享受者有什么讲究吗?” 逗号鼻腔里发出共鸣声:“哈,享受服务还需要讲究吗?” “当然有。”冒号断然道,“作为服务的享受者,最重要的是讲规矩。享受人家的服务,自然得按人家的规则,否则服务将得不到保障。比如,你可以在超市的货架上任意选取商品,但不能偷偷溜进货舱去取。” 逗号辩道:“可货舱想进也进不去啊。正如合适的封装,是禁止客人进入私有接口的。” 冒号作一引喻:“我们不妨这么假设,货舱的正门挂着‘非工作人员莫入’的牌子。但是你偶然发现,通往洗手间的过道尽头正好是货舱的后门,既没有上锁,也没有挂牌。请问你会不会大摇大摆地走进去?” 逗号哑口无言。 冒号循循善诱:“超市的工作人员也许不该为图方便而开放后门,但那是管理者的事,作为客户显然不应乘虚而入。商品从货舱到货架之前可能会有装箱、拆箱、条码打印、条码扫描等操作,客户直接从货舱拿货无疑将破坏这种程序,于人于己皆无益处。同样地,作为他人代码的客户,就应按他人所设计的方式去重用,如此才 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |