每日一得

不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速开发
最近关心的内容:SSH,seam,flex,敏捷,TDD
本站的官方站点是:颠覆软件

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  220 随笔 :: 9 文章 :: 421 评论 :: 0 Trackbacks

key words :面向接口编程

面向对象设计里有一点大家已基本形成共识,就是面向接口编程,我想大多数人对这个是没有什么觉得需要怀疑的。

问题是在实际的项目开发中我们是怎么体现的呢? 难道就是每一个实现都提供一个接口就了事了?反过来说,你有时候有没有觉得接口是多余的事? 又或者,你仅仅是觉得现在类似spring这样的框架已习惯用接口这种方式而心存当然。

设计模式解析里提到了面向对象设计考虑的几个视角,一个是概念层,一个是规约层,一个是实现层。我如果没有猜错的话,实际上我们大多数人的眼睛一直是盯着实现层的,而这正是面向对象设计所极力避免的,即你不要在一开始就关注这些细节,你要关注的是规约(接口).

对于实际项目开发来说,如果我们把实现的过程分为多个阶段的话我们不妨这么划分,第一阶段,根据client端的需要去设计我们的规约(interface),在这个阶段任何实现都没有,所有的任务就是定义接口所需要的职责,以及所需要的一些po,vo;第二阶段,实现前面定义的规约。而以前我是怎么做的呢? 我是交叉作的,即假模假样的定义一个接口(其实我心里在想这个东西有屁用),然后定义了一个方法,然后就立即去实现这个方法,再然后我又定义一个方法,继续去实现,我现在终于想通了,这样好累,效率很低,最重要的是,这不属于真正的设计。
现在我是怎么做的呢?比如一个list.jsp里需要查询,列表,然后看明细信息,然后增加信息,我会第一步在接口里定义完(这个过程会有整体设计的意识),毫不关心底层实现(数据库、事务),我的目标就是"我想要这个功能,我想要那个功能",至于那个功能怎么实现在第一阶段我认为那不是我的事情(尽管这个事情最终还是由我来做) .大家看这个过程和前面的过程有什么本质的不同呢? 就是分层的概念更加明显,你的工作更有层次,每次都有先设计再实现的步骤,而前面那个过程很容易就让你不知不觉地陷入纯实现的陷阱中。

一点感想,欢迎大家拍砖。

posted on 2007-03-12 00:40 Alex 阅读(12373) 评论(18)  编辑  收藏 所属分类: java建模

评论

# re: 真正理解面向接口编程 2007-03-12 02:56 sinoly
不管是面向什么编程都好,在不同的环境下,每一种方式都有自己的特点。
这种环境包含项目组的也包含客户方的还有公司管理方面的等等。。。
需要在不断的比较中确定。。。。
就像Java/C/Ruby/PHP等等,比较语言的优劣都是没有意义的。最重要的是实际情况分析!  回复  更多评论
  

# re: 真正理解面向接口编程 2007-03-12 20:03 azure
接口,就是对接的端口,模块与模块之间约定建立的交通路线。  回复  更多评论
  

# re: 真正理解面向接口编程 2007-03-20 13:17 lemonxd
觉得说的很对,我是个编程初学者,看了之后有很有体会。以前设计的时候总是想着实现,结果忽略了设计。所以……
  回复  更多评论
  

# re: 真正理解面向接口编程 2007-03-29 16:37 wahaha
讲的有道理...
不过在设计的时候很难不去想到实现的场景  回复  更多评论
  

# re: 真正理解面向接口编程 2007-04-30 18:02 我们走在JAVA的光明大道上
LZ说的太有 同感了,
刚开始就是为了有个接口而去搞个自认为多余的接口,然后马上实现他,哈!今天突然对接口有很大感悟,搜索到LZ这文章,真是一大幸事!  回复  更多评论
  

# re: 真正理解面向接口编程 2007-05-24 14:47 hh-lux
作者的意思是接口是使设计者和编程者分离吧。确实是这样,只是当我们自己开发系统时,自己即是设计者,又是编程者,作者的想法是对的。  回复  更多评论
  

# re: 真正理解面向接口编程 2007-06-12 22:36 lxf
@hh-lux
意思是为了让使用和实现分离.  回复  更多评论
  

# re: 真正理解面向接口编程 2007-11-20 16:41 yicong
很正确,尤其认同那句“(其实我心里在想这个东西有屁用)”,哈哈哈哈。
我也经常这样搞,然后就屁颠屁颠的去实现。哈哈哈哈  回复  更多评论
  

# re: 真正理解面向接口编程 2008-05-15 10:42 孤鹰
接口,就是一种规则,规定了我们在系统中应该实现的和必须实现的功能。  回复  更多评论
  

# re: 真正理解面向接口编程 2008-06-14 10:21
好,这样做感觉更能去解决一些问题。不再那么盲目了  回复  更多评论
  

# re: 真正理解面向接口编程[未登录] 2009-02-18 17:15 呵呵
好,确实不错。用同感  回复  更多评论
  

# re: 真正理解面向接口编程 2009-07-04 15:39 123
一直以来都对面向接口编程理解的不够,不知道什么是面向接口编程
只知道接口是一种规范,延迟方法的实现
要学习学习....  回复  更多评论
  

# re: 真正理解面向接口编程 2009-07-22 21:24 嘻嘻哈哈
随着工业软件的规模的越来越大, 同一个项目中参与的程序员越来越多。于是面临管理难度,所以应当先把框架搭好,通过框架来规范项目实现的目标,就是面向接口编程的思想。  回复  更多评论
  

# re: 真正理解面向接口编程 2009-08-04 17:06 Supporter
感觉很正确,顶!!!  回复  更多评论
  

# re: 真正理解面向接口编程 2010-11-05 14:11 kangdy
很有同感啊。转了。  回复  更多评论
  

# re: 真正理解面向接口编程 2013-06-25 12:59 再进一点
我发现总是先去想需要什么功能,这个功能怎么实现,然后需要怎么样的接口,不知道这和lz的想法怎么靠近。  回复  更多评论
  

# re: 真正理解面向接口编程 2013-07-26 14:18 OnTheRoad_Lee
嗯,很认同LZ的看法,面向接口编程主要是让我们的工作更有层次感,先有整体的设计(设计者),再有具体的实现(实现者),
只是在天朝这样的国度,我们挨踢民工是全能的,一条龙服务,既当设计者,又要当实现者(设计完之后,还是得你自己来实现)。
目前还没有体验到接口设计的便利性也好,整体性也好,层次感也好,不过了解了,  回复  更多评论
  

# re: 真正理解面向接口编程 2013-07-26 14:20 OnTheRoad_Lee
这位站在更高层次说面向接口编程,很赞同,只是目前还没有体会到,小公司@嘻嘻哈哈
  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: