999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談設計模式在Android代碼重構中的應用

2021-04-04 10:28:34陳禹樵
信息記錄材料 2021年8期
關鍵詞:方法設計

陳禹樵,隋 浩

(中移互聯網有限公司云產品事業部 廣東 廣州 510000)

1 引言

截至2021年2月,全球約70.46%的手機和平板搭載了Android操作系統,在Google Play商店中,可以下載到的Android應用數量達到295萬個。為了獲得更多的用戶,Android應用開發市場面臨著激烈的競爭。許多企業和開發者為了快速實現功能,忽視了架構的設計,隨著版本的迭代,功能添加和修改,應用越做越復雜,開發和維護的效率降低,應用質量也出現下滑。為了提升代碼的質量,提高應用的運行效率,代碼重構成為開發者面臨的現實問題。本文從設計模式的角度出發,結合案例討論其在代碼重構過程中的應用。

2 代碼重構

重構是指在不改變軟件可觀察行為的前提下,對軟件內部結構進行修改,使得軟件更容易理解,更容易修改[1]。在軟件開發的迭代過程中,基于以下因素,代碼重構過程是必不可少的:(1)代碼架構設計的不足;(2)軟件功能的疊加和修改;(3)開發技術的發展和進步;(4)開發規范的執行和變化。人們不可能實現一份適配所有變化的系統,保證后續的需求都不偏離最初的設計。代碼重構是糾正這些偏離,實現架構進步的一種手段。

代碼重構的主要目的包括:(1)優化代碼結構,降低軟件結構的復雜性,使得代碼結構清晰,閱讀、維護和拓展簡單;(2)提升軟件運行的效率,通過重構簡化復雜的邏輯判斷、重復的執行過程、過時的方法架構,優化速度;(3)提高軟件的健壯性,解決軟件迭代過程中積累的潛在問題;(4)控制代碼規范,統一不同人員的代碼風格和習慣,適配行業和企業制定的規范等。

代碼重構的主要方法有:(1)不良代碼的識別與監測;(2)基于搜索的重構方法;(3)基于UML模型的重構方法;(4)基于代碼異味的重構方法;(5)基于測試驅動的重構方法;(6)自動化重構工具[2]。

代碼重構的時機選擇:(1)添加新功能時一并重構;(2)修補錯誤時一并重構;(3)代碼審查時進行重構;(4)代碼設計完全錯誤時,應當重寫;(5)重構工作應安排入主版本發布計劃,有序實施。

3 設計模式

設計模式是指經過眾多的軟件開發人員在長期的開發工作中,總結出的解決軟件開發過程中面臨的一般性問題的模板化的設計方法。這些方法通常為了更簡單方便的改進或者復用以往成功的設計和體系機構,又能有效地處理需求的變更,某些模式可以減少類之間的耦合與依賴[3]。這些設計模式被軟件開發人員在后續的代碼設計過程中反復實踐和驗證。

Gamma等[4]于1995年出版的《設計模式:可復用面向對象軟件的基礎》一書中收錄了23種設計模式。這些設計模式在 Java、C++、Object-C、Kotlin等多種面向對象的編程語言都得到了實現,成為不同語言共用的模板方式。近年來,在解決復雜的軟件架構設計問題上,MVC、MVP、MVVM等設計模式在Android軟件開發過程中,也得到了廣泛的應用。

將設計模式思想應用于軟件重構中,可以解決提升代碼復用率,降低代碼耦合度,使得代碼結構更加清晰,進而提高代碼的可維護性,提高軟件健壯性、擴展性和規范化。

4 設計模式在Android代碼重構中的應用

不同的設計模式面向解決不同場景下的設計問題。在軟件重構過程中,應當根據問題選擇最優的設計模式,保證重構效果。在Android應用開發和Android系統源碼中,常用的設計模式約有7~8種,這些設計模式有著不同的變體,但其基本思想是一致的。熟悉這些常用的設計模式,可以解決重構過程中的大部分問題。下面將結合具體問題,討論5種常用設計模式在代碼重構工作中的應用。

4.1 單例模式

單例模式適合用于內存常駐、信息配置、公用方法或者全局管理等職責單一的任務。例如:Android應用經常會使用到設備信息,作為運行設備的唯一標識,對于設備信息的獲取和管理,在重構過程中可以構建DeviceInfo Manager單例對象,實現一次獲取,多次使用的目的。Android應用開發常會用到多線程技術,對于子線程和線程池的管理,可以在重構過程中構建Common Executor單例對象,統一管理子線程數量,管控子線程的運行、同步和結束。需要注意的是,在單例對象實例化時,需要注意線程同步問題,可采用雙重鎖的方式,避免異步線程產生空指針異常。單例模式不利于擴展,對象常常需要常駐內存,因此也不可濫用。

4.2 觀察者模式

觀察者模式適用于消息通知和事件傳遞等場景,在Android源碼和一些優秀的Android開源框架中,例如:ListView、RecyclerView、RxJava、OKHttp等,有著廣泛的應用。近兩年發展的ViewModel、LiveData等框架也是由觀察者模式思想發展而來。在重構過程中,可以應用于以下場景,例如:Android應用常會用到推送功能,在與服務端交互的過程中,新消息的到達會導致數據和狀態的改變。此類場景的重構,可以用Observable定義消息數據的更新與處理,將視圖層定義為Observer,訂閱數據處理類,在數據處理后,通過Observer通知視圖的刷新,解耦數據與視圖代碼的耦合。

4.3 代理模式

在開發過程中,經常會遇到這樣的場景:產品經理要求在某些行為函數前加入功能、日志或者數據統計。在不改變現有設計的情況下,代理模式是一種友好的選擇。代理模式可以控制對象的間接訪問,修飾和操作對象的輸入輸出。例如:對于數據訪問的權限判斷重構場景中,可以隱藏數據訪問類的visit方法,加入VisitorProxy類,在調用visit函數時,通過VisitorProxy類先調起權限判斷功能,根據其返回結果判斷是否繼續調用visit方法。這樣可以將權限判斷和數據訪問的代碼有效解耦,降低代碼混亂。

4.4 責任鏈模式

責任鏈模式的設計起源于工廠生產中的流水線思想,符合面向對象設計的單一職責原則。責任鏈模式的設計思路為:將一項任務分解成多個子任務步驟,對于子任務設計隔離開的接口和實現,再將子任務銜接成完整的任務流水。責任鏈模式在開源框架Glide、OKHttp、Gson中都得到了應用。例如:在郵箱應用中,新郵件數據的同步和顯示,該過程包括:新郵件通知→同步郵件頭→解析郵件頭→解析郵件結構→存儲郵件結構→刷新郵件列表→下載郵件正文→存儲郵件正文→下載郵件附件→存儲郵件附件,在重構過程中,可以選用責任鏈模式來實現。將以上過程抽象成Chain,每個階段的任務實現Chain中的process方法,并指定下一階段任務,依次傳遞,直到郵件同步和顯示任務處理完畢。

4.5 工廠模式

工廠模式可以歸為三類:簡單工廠模式、工廠方法模式和抽象工廠模式。簡單工廠模式通常以靜態代碼的形式,預先定義“工廠類”所能生成的“產品類”。工廠方法模式實現了對工廠角色的抽象,定義包含必須的工廠行為的接口類,在生產具體產品時,定義實現抽象工廠接口的具體工廠來實現,提高了對于產品生產行為的拓展性。抽象工廠模式,不僅工廠角色是抽象的,產品角色也是抽象的,適用于產品屬性未產生本質變化的生產行為。例如:對于圖像的處理工作的重構。圖像處理包括色調、飽和度、亮度、大小、旋轉等操作,這些行為可定義為抽象的Abstract Image Process Fatory,根據具體操作實現為Tone Process Fatory、Saturation Fatory、Brightness Fatory、Size Factory、Rotate Factory。其中Tone Process Fatory用于實例化具體的Abstract Tone Effect類。色調可能有暖色調、冷色調、懷舊效果等不同的需求,但其有著共同的抽象方法,可以定義繼承Abstract Tone Effect實現具體的處理邏輯。

關于Android應用重構過程中設計模式的選擇,應該充分考慮軟件設計和開發過程中可能會發生的潛在變化因素,考慮實現設計模式對軟件運行和架構產生的負擔,衡量應用該設計模式所帶來的價值與成本負擔。其基本過程如下:(1)理解任務需求,保證產品需求和功能表象不發生本質變化;(2)梳理現有代碼的基本框架,列出其需要重構的原因;(3)研究當前任務未來可能發生變化和添加的潛在需求;(4)匹配任務屬性及潛在需求與設計模式的匹配度;(5)衡量使用設計模式修改代碼的效率成本和時間成本;(6)安排分工,使用設計模式重構現有代碼;(7)將重構后的代碼使用在部分模塊,通過測試比較其于重構前的運行差異;(8)完善重構代碼的不足;(9)將重構后的代碼全量應用,移除舊代碼;(10)測試及上線。

5 結語

隨著Android應用日益激烈的競爭,代碼重構成為了提高其軟件質量、可維護性、可復用性、保證軟件開發可持續發展的重要手段。本文從設計模式角度出發,探討了設計模式與代碼重構目的的一致性,以及其在Android代碼重構方面的應用。代碼重構和框架設計是彼此互補又相互聯系的環節,在軟件設計、開發及維護階段,都有必要借助科學合理的設計模式,以提升代碼的質量,進而加強應用的競爭力。

猜你喜歡
方法設計
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
學習方法
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 亚洲精品你懂的| 国产香蕉在线视频| 亚洲欧美一区二区三区图片| 国产精品欧美在线观看| 久热re国产手机在线观看| 四虎综合网| 98精品全国免费观看视频| 99ri国产在线| 欧美丝袜高跟鞋一区二区| 国产99免费视频| 欧美日韩91| 国产另类视频| 国产精品久久久久婷婷五月| 99久久国产综合精品2020| 朝桐光一区二区| 国产欧美视频在线| 国模沟沟一区二区三区| 青青热久麻豆精品视频在线观看| 国产亚卅精品无码| 成人综合久久综合| 国产免费高清无需播放器| 亚洲无限乱码一二三四区| 亚洲永久免费网站| 免费看一级毛片波多结衣| 97视频在线精品国自产拍| 国产在线观看一区二区三区| 中国毛片网| 日本在线视频免费| 国产国产人成免费视频77777 | 欧美、日韩、国产综合一区| 一级做a爰片久久毛片毛片| 91热爆在线| 亚洲 日韩 激情 无码 中出| 国产欧美性爱网| 亚洲嫩模喷白浆| 啊嗯不日本网站| 九色在线观看视频| 成人精品区| 国产黄色片在线看| 久久99国产综合精品1| 在线人成精品免费视频| 亚洲男人天堂2020| 欧美三級片黃色三級片黃色1| 国产成人精品一区二区秒拍1o | 91久久精品国产| 国产精品香蕉在线观看不卡| 久久夜色精品| 色婷婷成人| 一级全黄毛片| 亚洲成av人无码综合在线观看| 成年人福利视频| 波多野结衣AV无码久久一区| 亚洲中文字幕久久无码精品A| 国产污视频在线观看| 免费全部高H视频无码无遮掩| 99久久人妻精品免费二区| 亚洲欧美日韩另类在线一| 亚洲欧美自拍中文| 精品91自产拍在线| 一区二区在线视频免费观看| 亚洲精品视频免费| 国产精品亚洲αv天堂无码| 欧美精品高清| 成人在线综合| 亚洲欧美一区二区三区图片| 久久96热在精品国产高清| 婷婷色狠狠干| 成人日韩精品| 一边摸一边做爽的视频17国产| 日韩精品无码一级毛片免费| aa级毛片毛片免费观看久| 中国黄色一级视频| 丰满人妻久久中文字幕| 亚洲国产天堂久久综合226114| 久久人搡人人玩人妻精品 | 一级毛片在线播放免费观看| 波多野结衣一区二区三区AV| 亚洲欧洲日韩久久狠狠爱| 欧美日韩精品综合在线一区| 日本高清视频在线www色| 亚洲侵犯无码网址在线观看| 色亚洲成人|