<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    I want to fly higher
    programming Explorer
    posts - 114,comments - 263,trackbacks - 0
     1.重構-即重新代碼,以使得它更可讀,更易理解,且更具可維護性。
         這對類庫而言,尤為重要。該類庫的消費者必須依賴他所使用的那部分類庫,并且能夠知道如果類庫出現了新版本,他們并不需要修改代碼。從另一個方面來說,類庫的開發者必須有權限進行修改和改進,并確保客戶端代碼并不會因為這些改動而受到影響。
         --->Java提供了訪問權限修飾詞,以供類庫開發人員向客戶端程序員指明哪些是可用的,哪些是不可用的;
         --->構件類庫->捆綁到一個內聚的類庫單元->package
    2.由于名字之間的潛在沖突,在java中對名字空間進行完全控制并為每個類創建惟一的標識符組合就成了非常重要的事情
    3.Java源代碼文件-編譯單元,每個編譯單元只能有一個public類,如果該編譯單元還有額外的類的話,包之外的世界是無法看到這些類,因為他們不是public類,而且他們重要用來為public類提供支持。
    4.Java解釋器的運行過程:
         找出環境變量CLASSPATH,CLASSPATH包括一個或多個目錄,用作查找.class文件的根目錄;從根目錄開始,解釋器獲取包的名稱并將每個句點替換成斜杠,已從CLASSPATH根中產生一個路徑名稱;得到的路徑會與CLASSPATH中不同項鏈接,解釋器就在這些目錄中查找與你所創建的類名相關的class文件。(解釋器還會查找某些涉及解釋器所在位置的標準目錄)
     注:使用jar會有一些不同;必須在類路徑中將jar的實際名稱寫清楚,而不僅是指明它所在位置的目錄。[本人覺得因為jar是一個歸檔文件,里面有許多class文件,所以查找某個相關的類時,必須要指明該類在哪個jar包]
    5.import static:靜態導入
    6.C條件編譯:
        該功能允許你不必更改任何代碼,就能夠切換開關并產生不同的行為。Java去掉此功能的原因是因為C在絕大多數情況下使用該功能是解決跨平臺問題的,即程序的不同代碼是根據不同的平臺來編譯的;由于java自身可以自動跨越不同的平臺,因此該功能對java是沒有必要的。 
     然而條件編譯還有一些其他用途,如調試;調試過程在開發中是開啟的,而在發布的產品中是禁用的;可以通過修改被導入的package方法來達到這一目的,修改的方法是將你程序用到的代碼從調試版改為發布版。這一技術可以適用于任何種類的條件代碼。--用import改變行為
         1.新建一個com.landon.debug的package,放入一個Debug類(工具類,工具方法,方法有實現)。如果我們想使用這個類進行調試,則可以import static com.landon.debug.Debug
         2.當我們準備發行版本時,就需要清除原來的Debug機制;為此我們只需要在一個不同的package中創建一個同樣的Debug類,而該類中的方法同debug package中的Debug類方法原型相同,只不過沒有方法是空實現而已。然后再修改之前的import語句,import static com.landon.release.Debug.
    7.不要錯誤的認為Java總是將當前目錄視作是查找行為的起點之一。如果你的CLASSPATH中少了一個"."作為路徑之一的話,Java就不會查找那里。
    8.訪問權限的控制常被稱為具體實現的隱藏。把數據和方法包裝進類中,以及具體實現的隱藏,常共同被稱作是封裝。其結果是一個同時帶有特征和行為的數據類型。
     出于兩個重要的原因,訪問權限控制將權限的邊界劃在了數據類型的內部。
         1.要設定客戶端程序員可以使用和不可以使用的界限。可以在結構中建立自己的內部機制,而不必擔心客戶端程序員會偶然的將內部機制當做是他們可以使用接口的一部分。
         2.接口和具體實現進行分離。如果結構是用于一組程序之中,而客戶端程序員除了可以向接口發送信息之外什么也不可以做的話,那么就可以隨意更改所有不是public的東西(例如有包訪問權限,protected,private的成員)而不會破壞客戶端代碼。
    9.雖然不是很常用,但編譯單元內不帶public類也是可能的。在這種情況下,可以隨意對文件命名,盡管隨意命名會使得人們在閱讀和維護代碼時產生混淆。
    10.事實上,一個內部類可以是private或者protected的。
    11.static成員內部可以調用private構造器->單例設計模式
    12.一定要記住:相同目錄下的所有不具有明確package聲明的文件,都被視作是該目錄下默認包的一部分;另外,注意包訪問權限(如果沒有為類訪問權限指定一個訪問修飾符,就會默認得到包訪問權限),如果該類的某個成員是public的話,則客戶端程序員依舊可以調用該static成員,盡管他們不能生成該類的對象。[最后面這一條有待考證,我測試是沒有通過,eclipse在其他包下面根本找不到包訪問權限的類,所以編譯錯誤,也就不能調用public static成員]
    13.控制對成員的訪問權限有兩個原因:
        第一是為了使用戶不要碰觸那些他們不該碰觸的部分。這些部分對于類的內部操作是必須的,但是他們并不屬于客戶端程序員接口的一部分。因此將方法和域指定為private,對客戶端程序員而言是一種服務。因為這樣他們可以清楚的看到什么對他們重要,什么是他們可以忽略的,這樣簡化了他們對類的理解。
         第二,也是最重要的原因。是為了讓類庫設計者可以更改類的內部工作方式,而不必擔心這樣會對客戶端程序員產生重大的影響。例如最初可能以某種方式創建一個類,然后發現如果更改程序結構,可以大大提高運行速度。如果接口和實現可以被明確的隔離和加以保護,就可以達到這一目的,而不必強制客戶端程序員重新編寫代碼。訪問權限控制可以確保不會有任何客戶端程序員依賴于某個類的底層實現的任何部分。
     類的公共接口是用戶真正能夠看到的,所以這一部分是分析和設計的過程中決定該類是否正確的最重要的部分。如果在最初無法創建出正確的接口,那么只要不刪除任何客戶端程序員在他們的程序中已經用到的東西,就可以在以后添加更多的方法。
         注意:訪問權限控制專注于類庫創建者和該類庫的外部使用者之前的關系,這種關系也是一種通信方式。然而在許多情況下并非如此,例如你編寫了自己的所有代碼或者你在一個組員聚集在一起的項目工作,所有的東西都放在同一個包中。這種情況是另外一種的不同的通訊方式, 所以嚴格的遵循訪問權限控制并不一定是最佳選擇。
    posted on 2013-01-08 17:10 landon 閱讀(1269) 評論(0)  編輯  收藏 所屬分類: ProgramBook
    主站蜘蛛池模板: 亚洲av片在线观看| 麻豆69堂免费视频| 国产成人亚洲精品狼色在线| 4399好看日本在线电影免费| 国产免费爽爽视频在线观看| 有码人妻在线免费看片| 免费一级毛片在线播放视频免费观看永久 | 中文字幕av无码无卡免费| 免费无码黄网站在线看| 国产美女视频免费观看的网站 | 免费一级毛片在级播放| 日日AV拍夜夜添久久免费| 国产中文字幕免费| 亚洲а∨天堂久久精品| 亚洲毛片αv无线播放一区| 久久久亚洲精品蜜桃臀| 亚洲国产综合专区电影在线| 亚洲AV成人片色在线观看高潮| 精品日韩亚洲AV无码 | 一二三四免费观看在线视频中文版 | 亚洲综合色在线观看亚洲| 亚洲AV日韩AV永久无码免下载 | 国产jizzjizz视频全部免费| 在线亚洲午夜理论AV大片| 亚洲一区影音先锋色资源| 亚洲一区精品视频在线| 免费无码专区毛片高潮喷水| 中文在线观看免费网站| 大学生一级毛片免费看| 亚洲一区视频在线播放| 亚洲另类小说图片| 中文字幕视频免费在线观看| h片在线免费观看| 亚洲成AV人片天堂网无码| 亚洲人成网站18禁止| 久久久久国色av免费看| 又粗又硬又大又爽免费视频播放| 亚洲免费在线视频| 人成电影网在线观看免费| 成人激情免费视频| 在线观看亚洲人成网站|