《架構整潔之道》iOS實踐
《架構整潔之道》iOS實踐
以一個購買子系統為例,分析該子系統各個模組的劃分、排列、通訊都遵守了哪些的設計原則。
模組概覽
該子系統分為以下兩個子模組
- 支付核心流程模組
- 支付業務初六模組
圖1-1 模組概覽圖
以下將會從下列三個維度分析該設計的緣由。
-
設計原則:SOLID
-
元件聚合原則:REP、CCP、CRP
-
元件依賴原則:ADP、SDP、SAP
支付核心流程模組
圖2-1 支付核心流程模組圖
類和介面一覽表
類、介面 | 功能 |
---|---|
PurchaseManager | 購買流程管理類 |
PurchaseItemManager | 購買專案管理類 |
PurchaseLogicProtocol | 購買流程抽象介面 |
PurchaseItemLogicProtocol | 購買專案抽象介面 |
PurchaseLogicImpl | 購買流程的實現類 |
PurchaseLogicMocker | 購買流程的Mock類 |
PurchaseItemLogicImpl | 購買專案實現類 |
PurchaseItemLogicMocker | 購買專案Mock類 |
PurchaseManager
、PurchaseItemManager
是購買子系統的核心類,兩者存在一定的聯絡,但是兩者又有相對獨立的特性,所以把他們拆開來,這樣做符合了SRP,程式碼也更加的方便閱讀和維護。
PurchaseLogicProtocol
、PurchaseItemLogicProtocol
定義了這兩個介面是為了讓PurchaseManager
、PurchaseItemManager
具有擴充套件性,Mock也是一個擴充套件的場景,在資源不足的情況下,我們可以定義不同的mock類用於模擬不同的業務場景。這樣做符合了OCP、SIP,從元件的角度來看,這樣做也是符合SDP。
支付業務處理模組
圖3-1 支付業務處理模組類圖
圖3-2 支付業務處理模組資料流圖
從圖 *圖3-2 支付業務處理模組資料流圖*
看到 HomePayDataManager
和 HomeDataManager
之間存在雙向的資料流動,所以這裡的模組設計中引入了一個介面HomePayDelegate
,打破了HomePayDataManager
和 HomeDataManager
之間的迴圈依賴關係,這麼做符合了DIP,同時也符合了元件中的ADP。
「其他文章」