大家都知道,在移動(dòng)設(shè)計(jì)開發(fā)中有很多種模式,最常用的單例設(shè)計(jì)模式、MVC設(shè)計(jì)模式、工廠設(shè)計(jì)模式、KVO、通知、代理等等。使用設(shè)計(jì)模式的目的:為了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性。
而架構(gòu)設(shè)計(jì)是宏觀的、全面的將設(shè)計(jì)魔術(shù)組織起來解決整個(gè)應(yīng)用系統(tǒng)的方案。架構(gòu)設(shè)計(jì)是人們對(duì)一個(gè)結(jié)構(gòu)內(nèi)的元素及元素間關(guān)系的一種主觀映射的產(chǎn)物。一個(gè)好的架構(gòu)設(shè)計(jì)有著良好的可復(fù)用性和可擴(kuò)展性,這樣可以滿足用戶不斷變化的需求。
低耦合企業(yè)級(jí)系統(tǒng)架構(gòu)設(shè)計(jì)
我們知道,軟件設(shè)計(jì)的原則是提高軟件系統(tǒng)的“可復(fù)用性”和“可擴(kuò)展性”。系統(tǒng)架構(gòu)設(shè)計(jì)采用層次劃分的方式,層次之間是低耦合的,層次的內(nèi)部是高內(nèi)聚的。如下圖:

表示層:用戶和系統(tǒng)交互的組件集合。用戶通過提交請(qǐng)求或者發(fā)出指令,系統(tǒng)接收用戶的請(qǐng)求或者指令,然后將請(qǐng)求或者指令調(diào)往下一層,最終將結(jié)果返回這一層。表示層是用戶交互和數(shù)據(jù)的展示,不應(yīng)具有業(yè)務(wù)邏輯。
業(yè)務(wù)邏輯層:接收處理表示層的指令和數(shù)據(jù),進(jìn)行業(yè)務(wù)邏輯處理,并將結(jié)果返回表示層。
數(shù)據(jù)持久層:數(shù)據(jù)持久層用于訪問信息系統(tǒng)層,即訪問數(shù)據(jù)庫或文件操作。
信息系統(tǒng)層:系統(tǒng)數(shù)據(jù)來源,如數(shù)據(jù)庫、文件、網(wǎng)絡(luò)數(shù)據(jù)等。
這是一個(gè)層次分明上下層關(guān)系。沒有下層就沒有上層。信息系統(tǒng)層是最底層,是所有層的基礎(chǔ),我們?cè)陂_發(fā)的時(shí)候應(yīng)該先做下層在做上層。
iOS分層架構(gòu)設(shè)計(jì)
ios應(yīng)用也需要架構(gòu)設(shè)計(jì),但不是不一定都采用分層架構(gòu)設(shè)計(jì)。一般而言,有關(guān)信息處理的應(yīng)用大多采用分層架構(gòu)設(shè)計(jì),但是像游戲等應(yīng)用就不會(huì)采用這種分層架構(gòu)設(shè)計(jì)。

表示層:UIKit Framework構(gòu)成,如視圖、控制器、控件、事件處理等。
業(yè)務(wù)邏輯層:采用的框架根據(jù)業(yè)務(wù)而定。
數(shù)據(jù)持久層:網(wǎng)絡(luò)數(shù)據(jù)的訪問或者本地?cái)?shù)據(jù)訪問。
信息系統(tǒng)層:信息來源分為本地和網(wǎng)絡(luò)。
在iOS平臺(tái)中,分層架構(gòu)有多種模式。
首先我們先熟悉:工程和工作空間、靜態(tài)庫和框架之間的關(guān)系。