15 APP架構(gòu)設(shè)計
15.1基本原則
(1)逐層調(diào)用原則及單向調(diào)用原則
現(xiàn)在約定將N層架構(gòu)的各層依次編號為1幸海、2祟身、…、K物独、…袜硫、N-1、N议纯,其中層的編號越大父款,則越處在上層。那么瞻凤,我們設(shè)計的架構(gòu)應(yīng)該滿足以下兩個原則:
(a)第K(1
(b)如果P層依賴Q層憨攒,則P的編號一定大于Q。
其中第一個原則阀参,保證了依賴的逐層性肝集,及整個架構(gòu)的依賴是逐層向下的,而不能跨層依賴蛛壳。第二個原則杏瞻,則保證了依賴的單向性所刀,及只能上層依賴底層,而不能底層反過來依賴上層捞挥。
(2)針對接口編程浮创,而不是針對實現(xiàn)編程
這里所指的接口,不是特指編程語言中的具體語言元素砌函,而是指一種抽象的斩披,在語義層面上起著接合作用語義體。它的具體實現(xiàn)讹俊,可能是接口垦沉,可能是抽象類,甚至可能是具體類仍劈。
具體到N層架構(gòu)中厕倍,針對接口編程的意義在部分上是這樣的:
現(xiàn)仍約定將N層架構(gòu)的各層依次編號為1、2贩疙、…讹弯、K、…屋群、N-1闸婴、N,其中層的編號越大芍躏,則越處在上層邪乍,那么第K層不應(yīng)該依賴具體一個K-1層,而應(yīng)該依賴一個K-1層的接口对竣,即在第K層中不應(yīng)該有K-1層中的某個具體類庇楞。
(3)依賴倒置原則
在軟件設(shè)計原則中,有一種重要的思想叫做依賴倒置否纬。它的核心思想是:不能讓高層組件依賴底層組件吕晌,而且,不管高層組件和底層組件临燃,兩者都應(yīng)依賴于抽象睛驳。
具體依賴——如果P層中有一個或一個以上的地方實例化了Q層中某個具體類,則說P層具體依賴于Q層膜廊。
抽象依賴——如果P層沒有實例化Q層中的具體類乏沸,而是在一個或一個以上的地方實例化了Q層中某個接口,則說P層抽象依賴于Q層爪瓜,也叫接口依賴于Q層蹬跃。
從這兩個定義可以看到,所謂的依賴倒置原則铆铆,正是上面提到針對接口編程蝶缀,而不是針對實現(xiàn)編程丹喻,兩者在本質(zhì)上是統(tǒng)一的。
(4)封裝變化原則
封裝變化的原則定義為:找出應(yīng)用中可能需要變化之處翁都,把它們獨立出來碍论,不要和那些不需要變化的代碼混雜在一起。
(5)開放-關(guān)閉原則
開發(fā)-關(guān)閉原則定義為:對擴展開放荐吵,對修改關(guān)閉骑冗。
具體到N層架構(gòu)中赊瞬,可以描述為:當(dāng)某一層有了一個新的具體實現(xiàn)時先煎,它應(yīng)該可以在不修改其他層的情況下,與此新實現(xiàn)無縫連接巧涧,順利交互薯蝎。
(6)單一歸屬原則
在這個架構(gòu)中,任何一個操作類都應(yīng)該有單一的職責(zé)谤绳,屬于單獨的一層占锯,而不能同時擔(dān)負兩種職責(zé)或?qū)儆诙鄠€層次。
(實體類及輔助類可以被多個層使用缩筛,但它們不屬于任何一個層消略,而是獨立存在)