無論在iphone開發還是學習的過程中都會看到一些不是很理想的**,不可否認自己也在不斷「貢獻」著這類**。面對一些**的「壞味道」,重構顯然是個有效的解決途徑。《iphone開發重構》系列就想總結和補充iphone開發中經歷的一些重構,其間可能會引用一些開源以及實際專案的**,本著對技術的探求,冒昧之處還請作者多多見諒。
在乙個應用中,不同地方所需要的內嵌網頁瀏覽器,在iphone可能就需要若干個使用uiwebview的controller(如下圖)。這些controller往往都有一些共通的行為,比如載入的時候會顯示載入進度並在狀態列顯示網路狀態圖示,載入完畢後隱藏進度和網路狀態顯示,錯誤的時候顯示提示等等。如果單獨在不同controller中實現不僅不合理,而且容易造成大量**重複以至於後來的維護噩夢。
通過合理抽象,抽取乙個模板類後就可以封裝這塊的行為,實現相同邏輯**的復用。重構到模板模式後的類圖如下:
webviewcontrollertemplate 的**如下:
@inte***ce webviewcontrollertemplate : uiviewcontroller
@end
@implementation webviewcontrollertemplate
- (void)dealloc
self.activityindicator = nil;
self.webview = nil;
[super dealloc];
}#pragma mark -
#pragma mark webview protocol
- (void)webviewdidstartload:(uiwebview *)webview
- (void)webviewdidfinishload:(uiwebview *)webview
- (void)webview:(uiwebview *)webview didfailloadwitherror:(nserror *)error
@end
這樣,具體類只有實現不同邏輯的部分,而無需關注一些共通的「雜事」。
**
iPhone開發重構 提取方法以調整函式粒度
無論在iphone開發還是學習的過程中都會看到一些不是很理想的 不可否認自己也在不斷 貢獻 著這類 面對一些 的 壞味道 重構顯然是個有效的解決途徑。iphone開發重構 系列就想總結和補充iphone開發中經歷的一些重構,其間可能會引用一些開源以及實際專案的 本著對技術的探求,冒昧之處還請作者多多...
小酌重構系列 17 提取工廠類
在程式中建立物件,並設定物件的屬性,是我們長幹的事兒。當建立物件需要大量的重複 時,看起來就不那麼優雅了。從類的職責角度出發,業務類既要實現一定的邏輯,還要負責物件的建立,業務類幹的事兒也忒多了點。物件建立也是 一件事 我們可以將 這件事 從業務 中提取出來,讓專門的類去做 這件事 這個專門的類一般...
31天重構學習筆記19 提取工廠類
摘要 由於最近在做重構的專案,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2009年10月份,由於當時沒有訂閱sean chambers的blog,所以是在國外的社群上閒逛的時候鏈結過去的。記得當時一口氣看完了整個系列並沒有多少感覺,因為這些基本上專案都在使用,只是我們沒有專門把它...