每日一得

不求多得,只求一得 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 閱讀(12194) 評論(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
這位站在更高層次說面向接口編程,很贊同,只是目前還沒有體會到,小公司@嘻嘻哈哈
  回復  更多評論
  


只有注冊用戶登錄后才能發表評論。


網站導航:
 
2013火热网络捕鱼游戏 幸运飞艇 浙江快乐彩12选5走势 贵州十一选五前三遗漏 永恒娱乐群 广东快乐十分开奖 银河棋牌1·0 六合财星 全民欢乐捕鱼礼包码 刘佰愠单双中特料期期准 澳洲幸运8的总和大小 时时彩软件 河北时时彩在线 陕西快乐十分现场开奖 分分彩官网95692巅峰 快乐飞艇走势图 真人龙虎斗赌博下载