iOS程式模組化設計

2022-08-16 11:27:12 字數 2852 閱讀 2131

一、模組化設計的概述:

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

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

綠色設計的原則被公認為「3r」的原則,即reduce,reuse, recycle, 減少環境汙染、減小能源消耗,產品和零部件的**再生迴圈或者重新利用。

二、模組化設計的特點:

三、模組的劃分:

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

(一)架構層面:

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

專案目錄「urmingservice」,主要開發工作區域下,整體分為「classes」, 「resources」/ 「tools」和「supporting files」三個大的目錄:

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

2、「resources」/ 「tools」這個目錄下,主要是分門別類按功能進行封裝好的工具類和整個專案會用到的資源,對於資源放置的層級目錄可以按大致分為:引導頁、導航欄、標籤欄和展示類。

3、「supporting files」這個目錄下,主要用於放置整個專案會用到的本地檔案,應用icon和啟動頁管理的「images.xcassets」,系統全域性配置檔案,國際化檔案等。

(二)業務層面:

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

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

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

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

(三)功能層面:

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

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

優點:職責獨立清晰。

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

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

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

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

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

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

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

軟體解決。

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

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

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

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

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

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

五、模組化設計綜述:

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

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

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

微信小程式(模組化)

1.模組化 我們可以將一些公共的 抽離成為乙個單獨的 js 檔案,作為乙個模組。模組只有通過 module.exports 或者 exports 才能對外暴露介面。需要注意的是 exports 是 module.exports 的乙個引用,因此在模組裡邊隨意更改 exports 的指向會造成未知的錯...

微信小程式 模組化

wxml js wxss三類都可以模組化!一 js類 可以將一些公共的 抽離成為乙個單獨的 js 檔案,作為乙個模組。模組只有通過module.exports或者exports才能對外暴露介面。tip 首先先要了解一點,每個js裡定義的變數 函式,只在當前的檔案裡有效,也就是說每個js檔案的作用域只...

整理 小程式模組化方法

可以將一些公共的 抽離成為乙個單獨的 js 檔案,作為乙個模組。模組只有通過module.exports或者exports才能對外暴露介面。注意 common.js function sayhello name function saygoodbye name module.exports.sayh...