国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

Java庫的建立方法及其實例

2019-11-18 10:42:28
字體:
供稿:網(wǎng)友

  作者 ariesram
  電子郵件地址 ariesram@linuxaid.com.cn, 或 ariesram@may10.ca
  
  本文及本人所有文章均收集在bambi.may10.ca/~ariesram/articles/中。
  
  正文:
  
  任何一種面向?qū)ο笳Z言都有它的庫。任何一種面向?qū)ο蟮恼Z言也都離不開庫的支持。用我們熟悉的 面向?qū)ο笳Z言為例子,C++有STL,java有API函數(shù),具體到開發(fā)工具,Visual C++提供了MFC, Borland C++提供了OWL。也有很多第三方提供的庫。我們在開發(fā)應用程序的時候,也發(fā)覺我們也 許需要某些特定的庫來完成特定的功能。那么,如何編寫自己的庫呢?
  
  利用Java的面向?qū)ο筇匦?,如封裝,繼續(xù),和一些設(shè)計模式,我們可以用標準的方法來建立自己的 庫。需要明白的一點:在你需要完成某個功能的時候,不要用專有的、特定的方法去編寫代碼,而 要全盤考慮,用通用的方法來完成,這樣,在積累了一定數(shù)量的庫以后,你就能重用這些庫來完成 新的功能,而不用每回都重頭編寫代碼。這也是面向?qū)ο笳Z言提供給我們的好處。也可以用J2EE的 規(guī)范為例子,J2EE提供了一個CBT(Component Based Transaction),所有的組件都尊崇J2EE規(guī)范,在 CBT中運行,這樣,編寫開發(fā)并且重用標準的通用的組件庫,可以縮短開發(fā)周期節(jié)約成本,并且可 以在任何符合J2EE規(guī)范的應用程序服務(wù)器(application SERVER)中運行,并且可以繼續(xù),擴展已 有的組件庫完成新的任務(wù)或者適應新的變化。
  
  在本文中,我將先討論如何建立自己的庫,需要根據(jù)哪些標準,然后給出一個簡單的例子。在第二 部分中,我將通過一個功能比較完善的庫來做進一步的討論。
  
  什么是庫?庫是一個可以重用的組件,它采用通用的設(shè)計,完成通用的任務(wù),可以節(jié)約開發(fā)者的時 間,縮短開發(fā)周期節(jié)約開發(fā)成本。一個設(shè)計完善的庫,并不只是為了完成某一個特定的任務(wù),而是 可以完成各種不同的任務(wù)。設(shè)計一個庫是困難的。寫一個算法并不難,但是設(shè)計庫的時候需要一種 比較好的結(jié)構(gòu),它能夠被用在各種需要的環(huán)境下,完成各種不同的任務(wù),但是還不能影響使用它的 程序代碼結(jié)構(gòu)。
  
  為什么要重用代碼?重頭開發(fā)一個新的軟件,工作量是非常巨大的,不論你用什么工具什么語言。 而代碼重用能夠節(jié)約大部分時間,而把時間花在新的功能的開發(fā)上。從一定的意義上來說,寫一個 新的軟件是利用了現(xiàn)有的代碼,重新拼裝以實現(xiàn)新的功能。從另外一個角度上來講,即使你沒有打 算把你寫的代碼變成一個通用的庫并分發(fā)給其他人使用,從設(shè)計的角度來講,采用一種全盤的通用 的設(shè)計方法也能讓你對所要完成的任務(wù)有更好的理解,并且優(yōu)化你的設(shè)計過程,從而優(yōu)化你的代碼 結(jié)構(gòu)。
  
  采用開發(fā)庫并且讓別人來使用它的方式,能夠幫助你在使用它的時候發(fā)現(xiàn)它的設(shè)計上的缺陷或者代 碼中的錯誤,并幫助你改正它。比方說,你寫了一個庫讓別人來使用,你不得不考慮通用的設(shè)計, 因為你并不能預見別人將在什么環(huán)境下使用和使用的目的。在其他人使用你的庫的過程中,可能會 碰到一些問題,有的可能是你的文檔寫得不夠清楚明白,有的也可能是你程序上的錯誤,也有可能 是使用者覺得在結(jié)構(gòu)上使用起來不方便或者不正確。那么你可以繼續(xù)作一些修改工作,在保持結(jié)構(gòu) 和接口不變化的情況下,做一些調(diào)整。
  
  在設(shè)計庫的時候,你需要以一個使用者的眼光來看問題,考慮如何設(shè)計和實現(xiàn)它。你需要明白,
  
  1、需要解決的問題是什么?需要達到一個什么目的?
  
  2、使用者關(guān)心的問題是什么?使用者需要得到一個什么結(jié)果?
  
  3、使用者不需要關(guān)心的問題是什么?什么細節(jié)是可以對使用者隱藏的?
  
  下面,我們用一個簡單的例子來說明如何設(shè)計和實現(xiàn)一個有用處的庫。
  
  設(shè)計一個網(wǎng)絡(luò)服務(wù)程序,我們需要考慮幾點:
  
  1、監(jiān)聽一個端口
  
  2、接受連接
  
  3、讀取或者寫入連接的流
  
  4、處理輸入的數(shù)據(jù),并且返回一個結(jié)果
  
  對于我們將要實現(xiàn)的庫來說,需要完成的是前三點,而最后一點我們留給使用者去實現(xiàn),這也是使 用者需要完成和關(guān)心的地方。
  
  庫的主要類叫做Server, 測試的類叫做EchoServer. EchoServer實現(xiàn)了一個簡單的服務(wù),從客戶端讀 取數(shù)據(jù),并且返回同樣的數(shù)據(jù)。
  
  設(shè)計原則一:封裝
  
  一個好的庫必須是一個緊湊的關(guān)系緊密的整體,而不是一個分散的關(guān)系松散的對象的集合。
  
  package是Java提供的一種類庫的封裝機制。一個package是一個Java類文件的集合,存放在同一個目 錄中。package有專有的名字空間。
  
  專有的名字空間的一個好處是,你不用擔心名稱的沖突。因為,假如你的類的名稱和別人的類的名 稱沖突,但是他們不在同一個package中,利用這一點可以避免名字的沖突。
  
  每一個package都有一個字符串來代表,比如java.lang, 或者javax.swing.plaf.basic.實際上每一個類的 全名都是由package的名字加上類的名字來代表的,這樣就避免了名字的沖突,比 如,java.lang.Object或者javax.swing.plaf.basic.BasicMenuBarUI.
  
  注重,有一個非凡的package叫做default package。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 诸暨市| 龙海市| 绥阳县| 城口县| 镶黄旗| 雅江县| 平远县| 九江县| 类乌齐县| 武平县| 襄樊市| 剑阁县| 馆陶县| 黄陵县| 湖南省| 木兰县| 阿合奇县| 镇安县| 淮北市| 合阳县| 祁门县| 蓝田县| 甘谷县| 青田县| 达日县| 芮城县| 辽阳县| 启东市| 安吉县| 永康市| 博客| 孟连| 临漳县| 会理县| 祁东县| 松桃| 吴桥县| 遂宁市| 栾川县| 雷山县| 顺义区|