iOS分層架構(gòu)簡介
在軟件工程中咕娄,設(shè)計模式(design pattern)是對軟件設(shè)計中普遍存在(反復(fù)出現(xiàn))的各種問題,所提出的解決方案徐块。這個術(shù)語是由埃里虾兀·伽瑪(Erich Gamma)等人在1990年代從建筑設(shè)計領(lǐng)域引入到計算機(jī)科學(xué)的昼激。
設(shè)計模式并不直接用來完成代碼的編寫橙困,而是描述在各種不同情況下凡傅,要怎么解決問題的一種方案夏跷。面向?qū)ο笤O(shè)計模式通常以類或?qū)ο髞砻枋銎渲械年P(guān)系和相互作用槽华,但不涉及用來完成應(yīng)用程序的特定類或?qū)ο蟆TO(shè)計模式能使不穩(wěn)定依賴于相對穩(wěn)定亲雪、具體依賴于相對抽象匆光,避免會引起麻煩的緊耦合终息,以增強(qiáng)軟件設(shè)計面對并適應(yīng)變化的能力周崭。
軟件架構(gòu)設(shè)計與設(shè)計模式的作用類似,都是為了提高軟件系統(tǒng)的“可復(fù)用性”和“可拓展性”摸航,他們二者不同的地方在于酱虎,設(shè)計模式只是面對某一特定問題的策略读串,是面向局部的恢暖,而架構(gòu)設(shè)計相對來說更加的宏觀,更加的全面嫁佳,它是有機(jī)的將這些設(shè)計模式組織起來解決整個應(yīng)用系統(tǒng)的方案脱拼。
在軟件架構(gòu)設(shè)計中比較典型的一種就是分層架構(gòu)設(shè)計,它采用層次劃分方式赌蔑,層次之間是松耦合的跷乐,層次內(nèi)部是高內(nèi)聚的愕提。下圖為iOS分層架構(gòu)設(shè)計:
在上圖中,簡要列舉了分層架構(gòu)設(shè)計的各層的內(nèi)容,以及各層的職責(zé)不见。本篇文章是利用工作空間框架來簡單實現(xiàn)一下分層稳吮,以一個工程的創(chuàng)建為例子來進(jìn)行說明。
工作空間框架實現(xiàn)
整個工程創(chuàng)建的步驟大致如下:
- 創(chuàng)建工作空間
- 創(chuàng)建表示層工程喻奥、數(shù)據(jù)持久層和業(yè)務(wù)邏輯層
- 建立依賴關(guān)系
- 代碼實現(xiàn)
- 層內(nèi)配置
創(chuàng)建工作空間
首先,創(chuàng)建一個文件夾甥厦,用來存放我們的工程刀疙,打開Xcode,在上方的菜單欄中選擇File->New->Workspace疚鲤,然后輸入文件名及要保存的位置桶略。
然后我們就會在剛才選擇的文件夾下發(fā)現(xiàn)多了這么個東西:
創(chuàng)建表示層工程焕窝、數(shù)據(jù)持久層和業(yè)務(wù)邏輯層
- 創(chuàng)建表示層工程
打開Workspace,shift + command + N
創(chuàng)建新工程虐秋,選擇singleView,輸入PresentationLayer,回車,然后選擇
點(diǎn)擊create,就可以看見workspace中包含了一個project了
2.創(chuàng)建數(shù)據(jù)持久層及業(yè)務(wù)邏輯層
shift + command + N
創(chuàng)建新工程,選擇
茅姜,輸入BussinessLogicLayer监透,回車院刁,然后選擇
同理狡刘,創(chuàng)建數(shù)據(jù)持久層,建完后猬腰,workspace內(nèi)情況如下
建立依賴關(guān)系
三個工程的依賴關(guān)系是:
- BusinessLogicLayer依賴于PersistenceLayer盒延,
- PresentationLayer依賴于BusinessLogicLayer。
- BusinessLogicLayer和PersistenceLayer都是框架工程鼠冕。
選擇TARGETS->BussinessLogicLayer->Build Phases->Link Binary With Libraries,選擇左下角的+按鈕添寺,選擇PersistenceLayer.framework,再點(diǎn)擊Add按鈕供鸠,依賴關(guān)系就添加完成了畦贸。以此來將其他依賴創(chuàng)建完畢。
代碼實現(xiàn)
PersistenceLayer中:
創(chuàng)建NoteDAO.swift作為基本數(shù)據(jù)處理類楞捂;
創(chuàng)建Note.swift作為基本類薄坏。
BusinessLogicLayer中
創(chuàng)建NoteBL.swift對數(shù)據(jù)處理進(jìn)一步封裝,實現(xiàn)業(yè)務(wù)邏輯寨闹。
PresentationLayer中
實現(xiàn)UI
詳細(xì)代碼請移步我的GitHub
層內(nèi)配置
frameWork需要進(jìn)行一定的配置胶坠,才能夠被外部引用,首先繁堡,就是本身文件內(nèi)的類和方法沈善,如果想要被外部調(diào)用乡数,需要聲明時加上關(guān)鍵字public
,并在Header中將文件添加到Public中闻牡,選擇設(shè)備净赴,并編譯,那么這個frameWork中的文件就能被外部的project訪問了罩润。