论坛首页 入门技术论坛

对接口编程的一些思考

浏览 1198 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-10  

        对一个问题的持续深追,又想起了Java中接口编程这个话题,这里先写下来. (深追问题的描述详见:Hibernate(十五):用Hibernate求记录总数的一个怪胎 ,Hibernate(十六): DetachedCriteria子查询与ALIAS_TO_ENTITY ,Hibernate(十七): Criteria子查询与ENTITY_MAP时的问题(续一) )


1, 初次接触这一概念是很摸不着头脑:Collection和Map,又跟泛型混在一起,
2, 接口的好处: 为设计师而生的, 设计时不必关心实现地用接口来搭架子. 这方面例子:JDBC, JSF. Servlet
3, 正如它的名字所示, 接口就是为调用设计的, 从一个侧面也反映出Java对软件工作的支持.
4, 可以有多种实现, 像dbcp. 而在调用层面上与实现解耦合.
5, 不用地想到了Java祖先C++里的多重继承: 继承更多地是为了代码重用,但同时也肩负着调用与实现解耦合的责任. 这样就跟软件工程里"问题由专人负责"的philosophy相冲突,于是Java在继承的基础上进上步抽象,提取出接口的概念.
6,现在像Groovy这样的动态语言没接口这一概念了,而是采用Duck Typing的策略, 好处: 任何类都可以当接口来调用, 但也有些混乱,总是不如对接口做类型检查那样清晰.


     以上列举了些现在能想到的与接口编程相关的话题. 应该说这些概念之间是有相互交叉的, 不过先贴在这里,一是希望抛砖引玉地引起大家讨论,二是作为自己对接口编程思考的0.1版本,日后随着认识的深入及相关概念的逐步清晰再归纳总结出0.2版本来.

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics