在线现看午夜福利片|女人16久久免费视频|鲁丝片一区鲁丝片二区鲁丝|一区二区三区欧美在线

  1. 
    
    <b id="glvx9"></b>
        1. <blockquote id="glvx9"><meter id="glvx9"></meter></blockquote>
            首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
            2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
            MPA考試 | 中科院
            四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
            新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
            計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
            華為認證 | Java認證
            公務員 | 報關員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導游資格
            報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
            人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
            駕駛員 | 網絡編輯
            衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
            會計從業(yè)資格考試會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
            注冊資產評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內審師
            一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
            質量工程師 | 物業(yè)管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師
            設備監(jiān)理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
            城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
            繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
            您現在的位置: 考試吧(Exam8.com) > 計算機等級考試 > 計算機二級 > JAVA > 復習資料 > 正文

            2011年計算機等考二級JAVA學習精華整理(75)

            考試吧整理了2011年計算機的等考二級JAVA學習精華,幫助考生備考。

              相關的設計模式有: Bridge、Composite、Decorator、Observer、Strategy等。

              下面的例子演示了這個規(guī)則,它的前提是:我們對同一個數據結構,需要以任意的格式輸出。

              第一個例子,我們使用基于繼承的框架,可以看到,它很難維護和擴展。

              abstract class AbstractExampleDocument

              {

              // skip some code ...

              public void output(Example structure)

              {

              if( null != structure )

              {

              this.format( structure );

              }

              }

              protected void format(Example structure);

              }

              第二個例子,我們使用基于對象組合技術的框架,每個對象的任務都清楚的分離開來,我們可以替換、擴展格式類,而不用考慮其它的任何事情。

              class DefaultExampleDocument

              {

              // skip some code ...

              public void output(Example structure)

              {

              ExampleFormatter formatter =

              (ExampleFormatter) manager.lookup(Roles.FORMATTER);

              if( null != structure )

              {

              formatter.format(structure);

              }

              }

              }

              這里,用到了類似于"抽象工廠"的組件創(chuàng)建模式,它將組件的創(chuàng)建過程交給manager來完成;ExampleFormatter是所有格式的抽象父類;

              將可變的部分和不可變的部分分離

              "將可變的部分和不可變的部分分離"是面向對象設計的第三個原則。如果使用繼承的復用技術,我們可以在抽象基類中定義好不可變的部分,而由其子類去具體實現可變的部分,不可變的部分不需要重復定義,而且便于維護。如果使用對象組合的復用技術,我們可以定義好不可變的部分,而可變的部分可以由不同的組件實現,根據需要,在運行時動態(tài)配置。這樣,我們就有更多的時間關注可變的部分。

              對于對象組合技術而言,每個組件只完成相對較小的功能,相互之間耦合比較松散,復用率較高,通過組合,就能獲得新的功能。

              減少方法的長度

              通常,我們的方法應該只有盡量少的幾行,太長的方法會難以理解,而且,如果方法太長,則應該重新設計。對此,可以總結為以下原則:

              ☆ 三十秒原則:如果另一個程序員無法在三十秒之內了解你的函數做了什么(What),如何做(How)以及為什么要這樣做(Why),那就說明你的代碼是難以維護的,必須得到提高;

              ☆ 一屏原則:如果一個函數的代碼長度超過一個屏幕,那么或許這個函數太長了,應該拆分成更小的子函數;

              ☆ 一行代碼盡量簡短,并且保證一行代碼只做一件事:那種看似技巧性的冗長代碼只會增加代碼維護的難度。

              消除case / if語句

              要盡量避免在代碼中出現判斷語句,來測試一個對象是否某個特定類的實例。通常,如果你需要這么做,那么,重新設計可能會有所幫助。我在工作中遇到這樣的一個問題:我們在使用JAVA做XML解析時,對每個標簽映射了一個JAVA類,采用SAX(簡單的XML接口API:Simple API for XML)模型。結果,代碼中反復出現了大量的判斷語句,來測試當前的標簽類型。為此,我們重新設計了DTD(文檔類型定義:Document Type Definition),為每個標簽增加了一個固定的屬性:classname,而且重新設計了每個標簽映射的JAVA類的接口,統(tǒng)一了每個對象的操作:

              addElement(Element aElement); //增加子元素

              addAttribute(String attName, String attValue); //增加屬性;

              則徹底消除了所有的測試當前的標簽類型的判斷語句。每個對象通過 Class.forName(aElement.attributes.getAttribute("classname")).newInstence(); 動態(tài)創(chuàng)建,

              減少參數個數

              有大量參數需要傳遞的方法,通常很難閱讀。我們可以將所有參數封裝到一個對象中來完成對象的傳遞,這也有利于錯誤跟蹤。

              許多程序員因為,太多層的對象包裝對系統(tǒng)效率有影響。是的,但是,和它帶來的好處相比,我們寧愿做包裝。畢竟,"封裝"也是OO的基本特性之一,而且,"每個對象完成盡量少(而且簡單)的功能",也是OO的一個基本原則。

              類層次的最高層應該是抽象類

              在許多情況下,提供一個抽象基類有利做特性化擴展。由于在抽象基類中,大部分的功能和行為已經定義好,使我們更容易理解接口設計者的意圖是什么。

              由于JAVA不允許"多繼承",從一個抽象基類繼承,就無法再從其它基類繼承了。所以,提供一個抽象接口(interface)是個好主意,一個類可以實現多個接口,從而模擬實現了"多繼承",為類的設計提供了更大的靈活性。

              盡量減少對變量的直接訪問

              對數據的封裝原則應該規(guī)范化,不要把一個類的屬性暴露給其它類,而是應該通過訪問方法去保護他們,這有利于避免產生波紋效應。如果某個屬性的名字改變,你只需要修改它的訪問方法,而不是修改所有相關的代碼。

              子類應該特性化,完成特殊功能

              如果一個子類只是使一個組件變成組件管理器,而不是實現接口功能,或者,重載某個功能,那么,就應該使用一個外部的容器類,而不是創(chuàng)建一個子類。

              建議:類層次結構圖,不要太深;

            上一頁  1 2 3 4 下一頁
              相關推薦:

              計算機等級考試二級Java經典算法大全匯總

              2010年9月計算機等級考試成績查詢時間匯總

               2011計算機等級考試二級JAVA學習精華匯總

            文章搜索
            版權聲明:如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。