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

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java 庫(kù)的建立方法及其實(shí)例 (上)

2019-11-18 10:47:45
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 瑞安市| 绵竹市| 泰和县| 盐亭县| 汾阳市| 崇礼县| 长顺县| 赞皇县| 汉寿县| 斗六市| 邓州市| 南平市| 横山县| 方正县| 独山县| 云龙县| 米脂县| 新源县| 宜昌市| 吉安市| 托克托县| 东阿县| 河南省| 岱山县| 连云港市| 忻州市| 精河县| 宁强县| 杨浦区| 平安县| 黄梅县| 勃利县| 吴川市| 新疆| 西乡县| 都江堰市| 广西| 鄂托克前旗| 中西区| 邹城市| 明溪县|