<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      川山甲

      追求內心的非常平靜!瞬間清空所有的雜念,達到物我兩忘!

        博客園  :: 首頁  ::  :: 聯系 :: 訂閱 訂閱  :: 管理
       思維導圖
       

       

      索引:

      ? Move Method(搬移函數)
      ? Move Field (搬移值域)
      ? Extract Class (提煉類)
      ? Inline Class (將類內聯化,就是把當前的類合并到其他類中)
      ? Hide Delegate (隱藏委托關系)
      ? Remove Middle Man ( 移除中間人)
      ? Introduce Foreign Method (引入外加函數)
      ? Introduce Local Extension (引入本地擴展)
       
       介紹
       
       
       
       專業術語
       
      delegate:委托
      encapsulate:封裝
      introduce:引入
      wrapper:覆蓋
       
       前言
       
      ”決定把責任放在哪里“——運用重構改變原先的設計。
       

      解釋:

        1、Class承擔過多而臃腫不堪——Extract Class將一部分責任分離出去。

        2、Class沒有承擔足夠多的責任,不再有單獨存在的理由——Inline Class將它融入另一個Class。

        3、Class使用另一個Class——Hide Delegate隱藏關系。

        4、承接(3),如果Client通過Middle Man 調用很多的Delegate Class的函數(這里只是簡單調用,只做跳轉,而Middle Man沒有做太多的業務邏輯,如10個Delegate Class中的Method對應10個Middle Man的Method)——Remove Middle Man,直接使用Delegate Class,可以部分使用Delegate Method。

       

       Move Method
       
      如果一個類中的方法與另一個類有很多的交流,那么我們就在另一個類中建立一個有類似功能的新函數,將舊函數變成一個單純的Delegating Method, 或是將舊函數移除。

       

      類圖:

       

      動機:

        1、如果一個類與另一個類有高度耦合,我就會Move Method。——class更簡單,更干凈利落的實現系統交付的任務。

        2、移動一些值域,就要檢查是否使用另一個類的次數必使用所駐對象的次數還多。

       Move Field
       
      狀況:你的class中的field被另一個class更多的用到。那么在另一個class里建立new field,修改舊的field。
       

       
       Extract Class
       
      狀況:一個類做了兩個類做的事,那么建立一個新Class,將相關的Field和Method從舊Class移到新Class。

       

       

       Inline Class
       
      狀況:你的某個Class沒有做太多事情(沒有承擔足夠責任),那么將Class的所有特性搬移到另一個Class中,然后移除原Class。
      動機:Inline Class與Extract Class相反。——把Extract Class例子反過去,因為PhoneNumber只用作讀取code和number。
       
       Hide Delegate
       
      狀況:客戶直接調用Server Object的Delegate Class的Method,那么在Server端建立客戶所需的函數Method,用以隱藏委托關系。
       
       學過對象技術的人都知道,雖然php允許你將field聲明為public,但你還應該隱藏field(private)。隨著經驗日漸豐富,有更多值得封裝的東西。
       
      看下面一個例子:

       
       $person->getDepartment()->getManager()明顯揭露了,要想找到Xiaocai的領導,必須要經過department,所以我們要做的事隱藏department。——可以減少耦合性。
       

       

       Remove Middle Man
       
      狀況:如果某個Class做了過多的Simple Delegate,那么我們就直接調用Delegate Class。
      動機:在Hide Delegate中的例子里當Department有更多新方法的時候,我們為了Hide Delegate,就要必須在Person里添加相應的方法做Delegate之用。這時候的Person完全變成了一個Middle Man,此時我們就應該直接調用Delegate Class——Department。
       重構的意義就在于:你永遠不必說對不起,只要你把出問題的地方修補好就行了。
       
       
       

       

       Introduce Foreign Method
       
      狀況:有一個類Client需要使用的類PreviousEnd中一個額外函數,但你無法修改這個類PreviousEnd,那么你就在Client中建立一個函數,并以一個PreviousEnd實體做為參數。

       

       Introduce Local Extention
       
      狀況:你的Class需要一些額外函數,但你不能修改當前的類,那么建立一個新Class,使它包含這些函數。使用Subclass 或 Wrapper。——這個一般用于你無法修改源碼的情況下使用。
       
       拿上面Introduce Foreign Method例子來說

      使用Subclass方法
       

      或使用Wrapper

       

       
       總結
       
      需要注意一下,“Extract Class”和“Inline Class”,”Hide Delegate“和”Remove Middle Man",都是相反的過程,具體理解,可以看前言中的那張流程圖。
       
      “Hide Delegate"我們常用于使用少量的”Delegate Method“的時候,而”Remove Middle Man“,用于調用很多”Delegate Method“的時候,我們可以直接使用Delegate Class,進行調用,而有的Delegate Method我們視情況保留一部分。
       
      “Extract Class”和“Inline Class”,"Extract Class"經常用于承擔那過多責任而變得臃腫不堪的Class中,而“Inline Class”經常用于當前的這個類”太不負責的“時候使用。——我個人是寧愿“Extract Class”,也不愿“Inline Class”。
       
      posted on 2012-04-01 00:21  川山甲  閱讀(3858)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品男男一区二区| 中文字幕乱妇无码AV在线| 大地资源高清免费观看| 在线播放深夜精品三级| 日韩欧美卡一卡二卡新区| 无码h片在线观看网站| 成人区人妻精品一区二区| 夜夜添无码试看一区二区三区 | 免费看国产精品3a黄的视频| 国产蜜臀在线一区二区三区| www欧美在线观看| 国产成人精彩在线视频| 欧美人与动牲交a免费| 狠狠色综合网站久久久久久久| 亚洲V天堂V手机在线| 久久精品色一情一乱一伦| 国产精品人妻中文字幕| 中文毛片无遮挡高潮免费| 中文字幕有码在线第十页| 东京热人妻无码一区二区av| 衣服被扒开强摸双乳18禁网站| 亚洲精品一区二区三区大| 又粗又硬又黄a级毛片| 欧美成人影院亚洲综合图| 国产台湾黄色av一区二区| 亚洲精品麻豆一二三区| 天堂在线www天堂中文在线| 精品亚洲综合一区二区三区| 青青青爽在线视频观看| 五十路丰满中年熟女中出| 亚洲欧美不卡视频在线播放| 色欲国产精品一区成人精品| 兴海县| 国产真实交换配乱婬95视频 | 夜夜春久久天堂亚洲精品| 日本视频精品一区二区| 中文字幕在线视频不卡一区二区 | 国产免费爽爽视频| 国内外精品激情刺激在线| 国产精品人妻一码二码尿失禁| 天堂网亚洲综合在线|