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

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

抽象PACKAGES增加系統(tǒng)靈活性

2019-11-18 13:27:15
字體:
供稿:網(wǎng)友

  為了確保package關(guān)聯(lián)的靈活性,java程序員在開發(fā)過程中都傾向于package的抽象部分的關(guān)聯(lián)而盡可能地避免具體部分的關(guān)聯(lián)。這樣的好處是我們可以最大程度地減小系統(tǒng)中更改所帶來的影響,從而獲得系統(tǒng)的高度完整性。這一節(jié)我們將講述一些啟發(fā)式知識,這些知識確保系統(tǒng)中package關(guān)聯(lián)更加靈活,達到增加系統(tǒng)的可擴展性和可維護性的目的。
  
  Package更改是必然
   
  關(guān)聯(lián)緊密的package會減小系統(tǒng)的可靠性,因為package中內(nèi)容的任一改變都會影響到整個系統(tǒng)。相反,假如package關(guān)聯(lián)很少,則其內(nèi)容的改變不會殃及其它部分。
  
  大部分的web程序都需要一個日志機制以答應(yīng)程序能夠追蹤錯誤信息并有助于調(diào)試。其實,日志機制是一個定制好的package成分,如Apache中的Log4j。無論這些機制是否運行,與日志機制必然有一個關(guān)聯(lián),這樣就潛伏地存在系統(tǒng)不可靠的危機。
  
  因為系統(tǒng)中有很多packages與日志機制有關(guān)聯(lián),所以必須最大程度地減小日志機制內(nèi)容的更改。雖然我們不能使用外部的日志機制方式,但我們可以采用其它方法來減小系統(tǒng)的更改對日志機制的影響。最通用的方法是使用正面(facage)模式,這一方法在程序執(zhí)行過程中可以把改變部分和其他部分隔絕。圖A顯示了在logfacade中的一個LoggingFacade LoggingFacade類。
  
  Figure A
   抽象PACKAGES增加系統(tǒng)靈活性(圖一)
  The LoggingFacade class
  正面方式可以把更改部分隔絕開,與日志機制有關(guān)聯(lián)的部分都通過logfacade運行。日志機制內(nèi)容可以改變或更新,但這些都被屏蔽起來,程序的其他部分不會遭受影響。
  
  從日志機制這一角度而言,LoggingFacade類支持以下的啟發(fā)式知識。
  
  更改最小的package將受到最大的關(guān)聯(lián)
  更改最大的package將受到最小的關(guān)聯(lián)
  然而,這一logfacade包還是不太穩(wěn)定,它會隨時破壞整個系統(tǒng),因為logfacade包在整個系統(tǒng)都要運行。我們必須找到新的一個日志機制方法,抽象package正是這一問題的答案。
  抽象package集中于成員特性
   
  抽象是面向?qū)ο蟪绦蛟O(shè)計中的一個基本定律。抽象有點難于理解,因為它涉及到過程及過程的結(jié)果。當執(zhí)行一個抽象的過程時,應(yīng)該集中于成員的重要特性。設(shè)計packages時要重視抽象的功能,其中一個好處是,能夠在執(zhí)行過程中把一個package獨立開來,即把聲明和執(zhí)行隔離開。
  
  在面向?qū)ο笾校^續(xù)和多態(tài)經(jīng)常被用于把聲明從執(zhí)行隔離開來。在定義一個抽象類時,我們可以從其他抽象類繼續(xù)一個類并提供一個相應(yīng)的執(zhí)行。下面的啟發(fā)式知識把這一概念應(yīng)用到package:具有關(guān)聯(lián)的package應(yīng)盡可能的抽象化。
  抽象的package包含抽象類和界面。因為package一般都是相互關(guān)聯(lián),你應(yīng)該確保這些關(guān)聯(lián)發(fā)生在抽象的成分,而不是具體的成分。抽象成分的關(guān)聯(lián)有助于系統(tǒng)的擴展。
  
  在我們上面討論的日志機制例子中,logfacade包的引入減小了日志改變所帶來的危機。然而,這一危機只是轉(zhuǎn)移到LoggingFacade類中,并沒有徹底的消除。為了更進一步地減小這一危機,我們在logfacade包引入一個LoggerInterface,這一LoggerInterface執(zhí)行LoggerInterface。如圖B說明了LoggerInterface不僅擴展了圖A中的設(shè)計,而且可以讓我們理解新的日志機制。
  
  Figure B
  抽象PACKAGES增加系統(tǒng)靈活性(圖二)
  The new LoggerInterface class
  Package設(shè)計中應(yīng)注重的要害事項
  下面列出了設(shè)計高靈活的packages應(yīng)注重的要害問題
  
  生成對象——為了限制packages之間的關(guān)聯(lián),可以使用“對象工廠”來生成包含內(nèi)部packages的具體的類,這些“工廠”返回界面數(shù)據(jù)類型的參數(shù)。
  抽象的packages——因為抽象packages能夠提供一個與其他packages關(guān)聯(lián)的聲明,沒有和其他packages關(guān)聯(lián)的抽象packages實質(zhì)上是無用的。
  抽象程度——我們不可能生成全部包含所有的抽象或界面類。相反,packages一般都抽象類和具體類的混合。在這種情況下,我們應(yīng)該確信我們只與package的抽象部分關(guān)聯(lián)。
  
  --------------------------------------------------------------------------------
  
  深入學習Java
  請閱讀ZDNet China 的Java文章列表,以深入學習Java。
  
  開始動手設(shè)計
  在前面的一節(jié)里,我們討論了設(shè)計package關(guān)聯(lián)的重要性及它們對系統(tǒng)穩(wěn)定性的影響。這一節(jié)我們集中討論于抽象packages,這些抽象packages能減小關(guān)聯(lián),有助于提高靈活的package關(guān)聯(lián)。這些啟發(fā)式知識將幫助你設(shè)計可擴展的,易維護的系統(tǒng)。
  
  本文相關(guān)連接請點這里

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 通辽市| 区。| 佛学| 邢台县| 铜梁县| 定边县| 英山县| 思南县| 绥江县| 长寿区| 鹿邑县| 开鲁县| 浦北县| 漠河县| 承德县| 雷波县| 塔河县| 莒南县| 神木县| 娄烦县| 杭锦旗| 房山区| 井冈山市| 峨边| 鄂伦春自治旗| 潍坊市| 灌云县| 原平市| 嘉黎县| 眉山市| 邵东县| 武鸣县| 大新县| 亳州市| 唐山市| 西平县| 分宜县| 八宿县| 紫金县| 娄烦县| 阜城县|