日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性

發布時間:2024/4/11 php 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
思維導圖

?

索引:

??Move Method(搬移函數) ? Move Field (搬移值域) ? Extract Class (提煉類) ? Inline Class (將類內聯化,就是把當前的類合并到其他類中) ? Hide Delegate (隱藏委托關系) ? Remove Middle Man ( 移除中間人) ? Introduce Foreign Method (引入外加函數) ? Introduce Local Extension (引入本地擴展) 介紹 承接上文PHP 雜談《重構-改善既有代碼的設計》之 重新組織你的函數 ,繼續說重構方面的內容。
專業術語 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?!猚lass更簡單,更干凈利落的實現系統交付的任務。

  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”。

總結

以上是生活随笔為你收集整理的PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品久久久久久亚洲毛片 | 狠狠操在线视频 | 无遮挡的裸体按摩的视频 | 中日黄色片 | 国产suv精品一区 | 亚洲精品成人片在线观看精品字幕 | 欧美精品一区二区三区视频 | 免费在线播放 | 日韩欧美视频在线免费观看 | eeuss鲁片一区二区三区在线观看 | 欧美一区日韩一区 | 亚洲狼人干 | 97超碰人人网| 日本免费不卡 | 先锋影视av | 牛牛电影国产一区二区 | 在线观看成年人视频 | a级黄色网 | 日韩在线免费视频观看 | 欧美性生交大片免费看 | av黄色免费在线观看 | 国产美女av | 羞辱狗奴的句子有哪些 | 操出白浆视频 | 久草资源网 | 黄金网站在线观看 | 一级不卡毛片 | 大j8黑人w巨大888a片 | 91看片视频 | 男同互操gay射视频在线看 | 国产又大又黄又爽 | 亚洲欧美一区二区三区久久 | 我要看一级黄色片 | 天堂最新资源在线 | 亚洲一区二区不卡视频 | 污网站在线播放 | aaaa黄色片 | 日韩中文在线一区 | 日日夜夜综合 | 午夜亚洲国产 | 中出一区| 日本三级日本三级日本三级极 | 欧美高清一级 | 久久特黄 | 久久98| 国产一级淫| 动漫av在线免费观看 | 国产喷白浆一区二区三区 | 五月丁香| 日本韩国中文字幕 | 色香色香欲天天天影视综合网 | 国产av无码专区亚洲av麻豆 | 色99999| 日本福利片在线观看 | 亚洲青色在线 | 狠狠v欧美v日韩v亚洲ⅴ | 美日韩丰满少妇在线观看 | 日本一本久久 | 俺去日 | 999精品| 久久精品国产清自在天天线 | 欧美性猛交ⅹxx | 婷婷伊人综合 | 日韩av三级在线 | 国产123区在线观看 91国产一区二区 | 久久精彩免费视频 | 亚洲8888| 在线观看久草 | 毛片麻豆 | 国产精品毛片久久久久久久 | 青青草在线免费观看 | 精品免费囯产一区二区三区 | 国产精品一区免费观看 | 午夜写真片福利电影网 | 国产愉拍 | 日韩另类视频 | 亚洲精选av | proumb性欧美在线观看 | wwwwww日本| 天堂视频中文在线 | 国产又粗又猛又大爽 | 国产人妻精品一区二区三区 | 三级黄网| 黄色91免费观看 | 黄色香蕉网 | 污污的网站在线观看 | 无码日韩精品一区二区 | 黄色片成年人 | 精品一区二区三区毛片 | 岛国av电影在线观看 | 国产suv精品一区二区 | 一区二区三区在线观看免费视频 | 校园sm主奴调教1v1罚视频 | 激情综合啪啪 | 亚洲av无码久久精品色欲 | 欧美一区二区视频在线 | 日韩一级片在线播放 | 黄色片网站在线播放 | 国产伦精品一区二区三区在线观看 |