軟件分層必須遵守的原則:
1.每一層都應(yīng)該都是由類或組件組成。
2.只存在上層對(duì)下層的依賴,下層不依賴于上層。
3.上層調(diào)用下層的api,下層實(shí)現(xiàn)細(xì)節(jié)的變動(dòng)不會(huì)影響到上層的代碼。
一個(gè)軟件系統(tǒng)好的劃分結(jié)構(gòu)應(yīng)該是:表現(xiàn)層->控制層->業(yè)務(wù)邏輯層->持久層->數(shù)據(jù)庫(kù)層。
軟件這樣分層的好處:
1.可伸縮性:可以把每一層分布在不同機(jī)器上,實(shí)現(xiàn)分布式應(yīng)用。
2.可維護(hù)性:如果需求變動(dòng),只要相應(yīng)調(diào)整某一層的實(shí)現(xiàn)即可。
3.可管理性:分層有利用分工。
4.可擴(kuò)展性:增加功能只需要在相應(yīng)層上調(diào)整即可。
5.可重要性:業(yè)務(wù)邏輯模塊則可供系統(tǒng)的多個(gè)模塊公共。
缺點(diǎn):
1.前期設(shè)計(jì)和編碼工作可能比較繁瑣。
2.調(diào)試相應(yīng)比較困難,必須通過日志記錄系統(tǒng)運(yùn)行狀態(tài)。
補(bǔ)充:
1 必須有一個(gè)不同等級(jí)的抽象時(shí),應(yīng)設(shè)立一個(gè)相應(yīng)的層次
2 依據(jù)邏輯功能的需要來劃分層次,每一層實(shí)現(xiàn)一個(gè)定義明確的功能集合
3 盡量做到相鄰層間接口清晰,選擇層間邊界時(shí),應(yīng)盡量使通過該界面的信息流量為最少
4 結(jié)構(gòu)清晰,有利于理解學(xué)習(xí)