2011年6月2日

          面向接口編程的好處

          面向接口的編程正是java的優(yōu)點,首先 用起來方便,結(jié)構清晰

          在j2ee中的接口也就是類,類與類之間的通信因為接口而變的簡單易懂

          呵呵,像J2EE中的API規(guī)范基本上都是接口,由各應用服務器來實現(xiàn),比如:WebSphere按照這個接口實現(xiàn)自己的,WebLogic也按照這個接 口實現(xiàn)自己的,作為開發(fā)者來說我們根本就不用去管誰是怎樣實現(xiàn)的,只要按照J2EE的API
          來寫就可以了,根本用不著導入它們的實現(xiàn)包,實際上具 體的是由它們自身完成了。

          接口說白了,也就是定死了一個框,具體的是糊紅紙還是糊黑紙我們都用不著去管的,我們只要知道它是個框,提供
          了 哪些方法就夠了。

          舉個簡單的JDBC的例子吧,比如有個BaseDao接口,現(xiàn)在有MySQLDao實現(xiàn)了一個(我們可以把具體的實現(xiàn)類 配在配置
          文件中,再通過反射進行實例化),也就類似這樣的:

          BaseDao dao = (BaseDao)(Class.forName(Config.getDaoName()).newInstance());

          其中 Config.getDaoName()可以獲得配置文件中的配置,比如是:com.bao.dao.impl.MySQLDao。

          之 后,那些人開始要燒錢了,要改用Oracle了,這樣我們只要按BaseDao的定義,再實現(xiàn)一個OracleDao就可以了,
          再將配置文件中的 配置改為:com.bao.dao.impl.OralceDao就可以了,而在已經(jīng)寫好的代碼中,我們可以一行不
          改的進行了數(shù)據(jù)庫移植,這個就 是面向?qū)ο笤O計原則中的“開-閉原則”(對增加是開放的,對修改是封閉的)。但
          這只是理論上的,現(xiàn)實中很難做到的。

          接口 = 電腦的USB插口!

          因為接口訂好了,所以那面到底插的是什么就不重要了!
          我們用戶只需要
          1 插上去
          2 停用移動設備
          3 拔下來

          這三個就好似USB的接口功能。他隱藏了實際功能,但提供給用戶統(tǒng)一的操作界面和使用方式

          寫小的應用程序看不到接口的優(yōu)勢,寫大點的程序馬上就顯示出接口的優(yōu)勢,越大越明顯.所以還是從現(xiàn)在開始養(yǎng)成面向接口編程的習慣.寫多了程序就會覺得優(yōu)勢 顯而易見.

          鏈條組裝起來了,然后向上面掛東西.....掛的東西可以隨時拿下來,可以隨時替換掉,可以隨時安上去.......

          子類只能繼承一個父類
          卻可以繼承多個接口..功能區(qū)分清晰,改起來方便
          夠了吧
          多給點

          優(yōu)點:
          接口和實現(xiàn)分離了,適于團隊的協(xié)作開發(fā)。

          更具體的優(yōu)點:可以參看IDP原則。

          缺點:
          設計難了,在你沒有寫實現(xiàn)的時候,就得想好接口,接口一變,全部亂套,這就是 所謂的設計比實現(xiàn)難。

          主要為了實現(xiàn)松散耦合的系統(tǒng),便于以后升級,擴展.你去研究一下spring吧,那東東會讓你真正體會到interface的優(yōu)點.

          接口,主要是為了 彌補 JAVA 丟失的 多繼承性 的特點吧 。。。

          封裝好,好使用

          易擴展

          容易讓人把編寫程序和現(xiàn)實聯(lián)系起來。呵呵

          接口在項目中用的比較多的原因是,當你調(diào)用別人的接口時可以不用部署,直接引用就行了。

          我記得我曾經(jīng)在一篇帖子中提到過,一個接口可以從三方面去考察:
          制 定者(或者叫協(xié)調(diào)者)實現(xiàn)者(或者叫生產(chǎn)者)調(diào)用者(或者叫消費者)

          接口本質(zhì)上就是由制定者來協(xié)調(diào)實現(xiàn)者和調(diào)用者之間的關系

          所以通常說的 “面向接口編程”可以理解為:
          只有實現(xiàn)者和調(diào)用者都遵循“面向接口 編程”這個準則,制定者的協(xié)調(diào)目的才能達到。

          一個老生常談的例子就是JDBC。

          很多人費解:既然我每連接 一種數(shù)據(jù)庫(如mysql)都要事先部署驅(qū)動程序,那我直接訪問驅(qū)動程序不就行了?還要JDBC干嗎?

          實際上,JDBC已經(jīng)起了至關重要 的作用了:正因為驅(qū)動程序是按照JDBC所規(guī)定的方法編寫的,你才可以按照JDBC的方式去使用。
          換句話說,如果驅(qū)動程序提供者不按照JDBC標 準來編寫,而是按它自己獨創(chuàng)的方式編寫,那么你在使用驅(qū)動程序的時候就要花時間查看驅(qū)動程序的文檔以搞清楚用法。而當你日后決定使用另一種數(shù)據(jù)庫的時候, 這種數(shù)據(jù)庫的驅(qū)動程序也不是按照JDBC編寫的,你又得去搞清楚另一套完全不同的用法,而你的所有代碼都必須做相應的更改。這種代價是不可想象的。

          而 現(xiàn)在的情況是,驅(qū)動程序提供者都按照JDBC規(guī)定的方式來編寫,程序員都按照JDBC規(guī)定的方式來使用。程序員不用關心自己正在使用何種數(shù)據(jù)庫,而驅(qū)動程 序編寫者也不用費盡心力去編寫接口文檔來向程序員解釋驅(qū)動程序的用法,大家都向標準看齊就行了。

          轉(zhuǎn)載自:http://www.java123.net/JavaSE/mianxiangjiekoubianchengdehaochuheyoudian_7139.html

          posted @ 2011-06-02 23:04 sky.wind 閱讀(1452) | 評論 (0)編輯 收藏

          僅列出標題  
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統(tǒng)計

          公告

          歡迎光臨我的小博客,多多發(fā)表你的看法哦!

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          主站蜘蛛池模板: 山东省| 芒康县| 阿荣旗| 顺平县| 高尔夫| 西乌珠穆沁旗| 栾城县| 陵川县| 调兵山市| 罗定市| 清镇市| 巴中市| 扶风县| 九龙县| 水城县| 仁寿县| 安乡县| 宝清县| 安远县| 大同县| 夏河县| 东源县| 辽宁省| 黄平县| 玉环县| 噶尔县| 许昌县| 临西县| 筠连县| 平谷区| 万源市| 沁水县| 兖州市| 石林| 黔江区| 门源| 宝清县| 砀山县| 同江市| 商丘市| 莱芜市|