iOS程式模組化設計

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   ar   os   使用   sp   

一、模組化設計的概述:

        模組化設計(Block-based design):對一定範圍內的不同功能或相同功能的不同效能、不同規格的產品進行功能分析的基礎上,劃分並設計出一系列功能模組,通過模組的選擇和組合構成不同的定製產品,以滿足市場的不同需求。

       模組化設計是綠色設計方法之一,綠色設計是指“在產品整個生命週期內,著重考慮產品環境屬性(可拆卸性、可回收性、可維護性、可重複利用性等)並將其作為設計目標,在滿足環境目標要求的同時,保證產品應該有的功能、使用壽命、品質等要求”。

       綠色設計的原則被公認為“3R”的原則,即Reduce,Reuse, Recycle, 減少環境汙染、減小能源消耗,產品和零組件的回收再生迴圈或者重新利用。

二、 模組化設計的特點:

  • 控制了程式設計的複雜性:模組化設計將整體進行切割封裝,每一小的功能即可封裝成一個小的模組,獨立運行,互不影響,控制了整體的複雜性。
  • 各模組相對獨立、功能單一、結構清晰、介面簡單:模組化後的代碼相對獨立,功能單一,只在外部提供必要的介面供外界調用,內部的實現過程,隱藏在內部,物件導向的介面編程,使得結構清晰,介面簡單,能達到高內聚,低耦合的效果。
  • 通用性:模組化設計需要保證抽出來的功能無論是在SDK支援的功能上還是螢幕尺寸的適配上都用靈活性的方法來封裝,這樣才能保證應用能夠部署在支援的最低系統版本基礎上的同時,適應不同螢幕的適配。
  • 避免程式開發的重複勞動:每個項目中,都會或多或少的涉及到相同的功能和UI介面展示,將這些相同的功能或介面UI進行模組化,無疑是能避免程式開發的重複勞動,同時也能夠提高編碼的品質。
  • 縮短了開發週期:將項目中涉及到的功能和UI介面提前進行模組化後,需要用到時直接調用,進行組裝,能縮短開發週期,同時也能避免資源浪費。
  • 易於維護和功能擴充:因為將整體的功能進行模組化,使得每一個功能只是一個小的功能點,相對來說,更易於維護。有新的需求,需要增加新的功能點,也方便統一擴充,之前模組化好的代碼也無需改動,易於維護。

三、模組的劃分:

        模組的劃分可以從架構層面、業務層面或功能層面上進行劃分:

      (一)架構層面:

       每個項目都會有整體的架構,這個架構就像地基一樣,只有搭好了架構才能在這個基礎上進行相應模組功能的開發。項目架構在搭建的過程中,從層級上來說,可以按以下方式進行搭建(以下為有名服務的架構):

       項目目錄“UrMingService”,主要開發工作區域下,整體分為“Classes”, “Resources”/ “Tools”和“Supporting Files”三個大的目錄:

       1、在“Classes”這個目錄下每個模組又按MVC的設計模式進行搭建,進行分門別類,方便管理,也增加了代碼層級的可讀性,我們在“有名服務”的項目中分為“首頁”、“訊息”、“發布”、“訂單”和“我的”五個大模組,搭建架構時,在這幾大業務模組的基礎上,增設一個“Public”模組,這個模組裡面主要是放置一些項目最上層級的基類或公用類,比如導覽列和底部標籤欄整體風格的設定等,也可以用MVC的模式進行層級化管理。

       2、“Resources”/ “Tools”這個目錄下,主要是分門別類按功能進行封裝好的工具類和整個項目會用到的圖片資源,對於圖片資源放置的層級目錄可以按大致分為:引導頁、導覽列、標籤欄和展示類。

       3、“Supporting Files”這個目錄下,主要用於放置整個項目會用到的本地檔案,應用icon和啟動頁圖片管理的“Images.xcassets”,系統全域設定檔,國際化檔案等。

     (二)業務層面:

       業務層面的模組劃分跟產品設計的業務模組劃分有關,可以將不同業務劃分成各個子模組,這是相對整體又獨立的劃分,比如“有名服務”中我們將業務模組劃分為“首頁”、“訊息”、“發布”、“訂單”和“我的”,每一個相對獨立的業務模組組裝在一起,完成了“有名服務”所要展示的主題與業務。

       業務模組的統一與業務模組之下的UI介面風格的統一有利於打造一系列同類風格的產品,這樣可以在架構與功能模組化的基礎上,將同類產品進行整體的模組化,實行工廠化定製開發。

       優點:從業務層面上的劃分,會使得各個模組更加獨立。

       缺點:處理公用的事務將會變得繁瑣。

      (三)功能層面:

       功能層面的模組劃分,是為了功能獨立,實現高內聚,低耦合。每一個小的功能模組能運行,能調試,能測試,各個功能之間基本是完全獨立的,不存在相互依賴的關係。

       但是功能是與業務無法分割的,我們在開發時,需要宏觀的把控業務與功能之間的關係,對於相似的業務模組,需要統一區別開發,協作完成,防止出現重複做工。

       優點:職責獨立清晰。

       缺點:各司其責,缺少連續性與宏觀性。

四、 常見問題及解決方案:

       1、問題:相同功能,多處使用。

       解決方案:將各個功能按職責剝離出來,各自開發各自的功能模組。

       能獨立運行,能編譯為靜態庫,有完整的內部介面文檔。

       符合:可拆卸行、可回收性、可維護性和可重複利用性。 

       2、問題:如果模組拆分後,各個模組經常會有第三方庫的依賴,比如公用庫等。如何避免重複引用及引用版本的問題。

       解決方案:用CocoaPods軟體解決。

       第三方的依賴全部由它內建的podfile配置完成,它會根據項目中引用的第三方打包於項目中,如果遇到多個重複引用時,它將會合并引用。我們的各個模組也可以做成獨立的podspecs檔案,供其他模組引用,這樣就可以實現模組的升級與更新。

      3、問題:功能模組化後,每個模組的具體功能是怎樣的?

      將應用程式中的功能分解為獨立的模組,這帶來了一個新的挑戰——我們需要確保這些互不依賴的零件們能夠在一起工作。

      一個模組系統的另一個特點是外部依賴的聲明。很多組件對外部條件有一定需求。使用依賴模式來維持模組系統中組件之間的依賴性有一個大前提,那就是我們必須遵循一系列的規則:

      第一個規則是向後相容性:如果新版本發布,那麼所有在之前版本下可建立的契約也必須能夠在新版本下工作。

      第二個規則是,系統中的組件需要準確的說明它們需要什麼。當一個模組的依賴性產生改變的時候,它必須要說出來,這樣系統才能夠準確的確認這些依賴性是否被滿足。

 五、模組化設計綜述:       

       模組最重要的屬性是它們應該儘可能的獨立和自包含;模組應被設計成可以提供一整套功能,以便程式的其它部分與它清楚地相互作用;模組提供的功能必須是完整的,以便它的調用者們可以各取所需。

       模組化就是為了減少循環相依性,減少耦合,提高設計和開發的效率。為了做到這一點,我們需要有一個設計規則,所有的模組都在這個規則下進行設計。良好的設計規則,會把耦合密集的設計參數進行歸類作為一個模組,並以此劃分工作任務。而模組之間彼此通過一個固定的介面(所謂的可見參數)進行互動,除此之外 的內部實現(所謂的隱參數)則由模組的Team Dev進行自由發揮。

       最後但也是重要的一點:方法命名的規範性很重要,注釋很重要,如果沒有注釋只有開發人員心中很清楚,所以必要的注釋會給後期的代碼維護工作帶來便利的同時也提高效率。每個介面的主要是用於做什麼的,可以在標頭檔中適當進行說明,

 

參考文獻:

http://doruby.com/projectmanage/2013/04/12/block-based-design/

http://developer.51cto.com/art/201001/179842_1.htm

http://book.51cto.com/art/201007/212898.htm

http://blog.csdn.net/newjerryj/article/details/7749901

http://blog.csdn.net/optman/article/details/2319450

http://blog.csdn.net/jyc1228/article/details/4636037

 

iOS程式模組化設計

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.