<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### Encapsulate Field(封裝值域) 你的class中存在一個public值域。 將它聲明為private,并提供相應的訪問函數(accessors)。 ~~~ public String _name ~~~ => ~~~ private String _name; public String getName() {return _name;} public void setName(String arg) {_name = arg;} ~~~ **動機(Motivation)** 面向對象的首要原則之一就是封裝(encapsulation),或者稱為「數據隱藏」(data hidding)。按此原則,你絕不應該將數據聲明為public,否則其他對象就有可能訪問甚至修改這項數據,而擁有該數據的對象卻毫無察覺。這就將數據和行為分開了(不妙)。 public 數據被看做是一種不好的作法,因為這樣會降低程序的模塊化程度(modularity)。如果數據和使用該數據的行為被集中在一起,一旦情況發生變化,代碼的修改就會比較簡單,因為需要修改的代碼都集中于同一塊地方,而不是星羅棋布地散落在整個程序中。 Encapsulate Field是封裝過程的第一步。通過這項重構手法,你可以將數據隱藏起來,并提供相應的訪問函數(accessors)。但它畢竟只是第一步。如果一個class除了訪問函數(accessors)外不能提供其他行為,它終究只是一個dumb class (啞類〕。這樣的class并不能獲得對象技術的優勢,而你知道,浪費任何一個對象都是很不好的。實施Encapsulate Field之后,我會嘗試尋找那些使用「新建 訪問函數」的函數,看看是否可以通過簡單的Move Method 輕快地將它們移到新對象去。 **作法(Mechanics)** - 為public值域提供取值/設值函數(getter/setter)。 - 找到這個class以外使用該值域的所有地點。如果客戶只是使用該值域,就把引用動作(reference)替換為「對取值函數(getter)的調用」;如果客戶修改了該值域值,就將此一引用點替換為「對設值函數(setter)的調用」。 - 如果這個值域是個對象,而客戶只不過是調用該對象的某個函數,那么無論該函數是否為修改函數(modifier,會改變對象狀態),都只 能算是使用該值域。只有當客戶為該值域賦值時,才能將其替換為設值函數(setter)。 - 每次修改之后,編譯并測試。 - 將值域的所有用戶修改完畢后,把值域聲明private。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看