读书人

为啥要针对接口编程

发布时间: 2012-11-13 10:00:50 作者: rapoo

为什么要针对接口编程
接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。


接口反映了系统设计人员对系统的抽象理解的程度。


接口都是在一定的环境中产生的。脱离原先的环境,所有的接口将失去原有的意义。

-----------------------------------------------
接口统一了,实现可以千差万别,我们都可以按相同的方式访问。拿JDBC来说,很多东西都是接口,实际上就像是个架子,各个不同的数据库厂商或者第三方根据这个框架往里面塞具体的驱动实现,对于JDBC的使用者而言,这些都不必关心,按着JDBC的统一方式访问数据库就可以了,很多时候这样做也带来代码重用的方便,对不同的数据库,只需要修改少量参数而不必修改具体访问细节,而这一步也很容易放到具体程序之外,从而使代码尽可能的独立于具体的数据库,这对于程序的维护是很有好处的。

对于用户是不是真的需要知道具体类,我想:
1、就算真的需要知道具体的类,在类的对象产生后还有一个如何操纵对象的问题,假如程序中需要的具体对象所属的类不一样,但接口一致的话,那么我们很容易以利用多态写出更简洁且容易扩展的代码。
2、很多时候对象的最终的使用者和类/对象的构造者并不是同一个人,他们之间还需要一个抽象层作为contract,这个时候接口的作用还是很明显,就像前边提到的JDBC。

------------------------------------------------
有人提问:尽量少用接口行不行?
请看这个帖子:
http://www.iteye.com/topic/1120032?page=3

,在这里我投你一个精华


还记得前面提到了 "共有的3个特点" 吗? 我们来分析一下,cataclyzh(楼主)所在的项目, 拥有几个?
1.一个接口有多个实现类-- 没有,cataclyzh(楼主)的接口只有一个实现类.
2.有两个角色--没有,永远是cataclyzh(楼主)这一个项目组的三五个人.同一个项目组算一个角色.
3.有时间差--或许有但不明显,基本都是当年或两一二年的项目.

经理的脸色越来越难看,所以眼前的情形是要应付的, 但也要有长远的目光.接口带来的好处是有目共睹的.cataclyzh(楼主)如果想收获接口带来的好处, 还需要先顶过目前的难关,再未来扩展时或许会收获到. 这还是一个"或许",因为但愿你公司的这个最贴近用户的产品还有扩展的机会.jdbc扩展的机会是无限大的不会消失,但你的产品....
这时候"敏捷"更重要.




最后再重复一次前面说过的话:写与不写接口,这种大家每天都在做的平常平常平常平常事儿,是很难以讨论难以达成共识的,因为人人天天都在做这件事儿,人人都有自己的观点与看法,人人都认为自己的做法是正确的才去行动,没有人认为自己做的是不对的.










读书人网 >编程

热点推荐