<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          說說軟件為什么要分層?

          共 1078字,需瀏覽 3分鐘

           ·

          2020-09-01 14:39

          來源:SegmentFault 思否社區(qū)

          作者:Jason




          背景分析


          在大型軟件系統(tǒng)設(shè)計(jì)時(shí),業(yè)務(wù)一般會(huì)相對(duì)復(fù)雜,假如所有業(yè)務(wù)實(shí)現(xiàn)的代碼都糾纏在一起,會(huì)出現(xiàn)邏輯不清晰、可讀性差,維護(hù)困難,改動(dòng)一處就牽一發(fā)而動(dòng)全身等問題。為了更好解決這個(gè)問題就有了我們現(xiàn)在常說的分層架構(gòu)設(shè)計(jì)。




          軟件分層設(shè)計(jì)


          分層設(shè)計(jì)的本質(zhì)其實(shí)就是將復(fù)雜問題簡單化,首先基于單一職責(zé)原則(SRP-Single responsibility principle)讓每個(gè)對(duì)象各司其職,各盡所能。然后再基于“高內(nèi)聚,低耦合”的設(shè)計(jì)思想實(shí)現(xiàn)相關(guān)層對(duì)象之間的交互。這樣可以更好提高程序的可維護(hù)性和可擴(kuò)展性,例如生活中的樓宇設(shè)計(jì),生日蛋糕設(shè)計(jì),企業(yè)的組織架構(gòu)設(shè)計(jì)等。




          通訊領(lǐng)域的OSI參考模型


          在計(jì)算機(jī)通訊領(lǐng)域還有典型的OSI參考模型(Open System Interconnection Reference Model),TCP/IP參考模型等,如圖所示:



          其中,TCP/IP參考模型是OSI參考模型的一種網(wǎng)絡(luò)簡化通訊模型,這里不對(duì)每一層進(jìn)行介紹,具體有關(guān)OSI和TCP/IP的知識(shí)請自行進(jìn)行查閱。




          互聯(lián)網(wǎng)領(lǐng)域的分層架構(gòu)


          基于Java的互聯(lián)網(wǎng)架構(gòu),在進(jìn)行分層設(shè)計(jì)時(shí),首先要對(duì)整體的系統(tǒng)分層架構(gòu)有一個(gè)基本認(rèn)識(shí),如圖所示:



          在上圖中,很多公司會(huì)根據(jù)雇員的技能特長進(jìn)行相關(guān)分工,例如有運(yùn)維工程師,中間件平臺(tái)開發(fā)工程師,產(chǎn)品開發(fā)工程師,測試工程師等。我們很多初級(jí)的java程序員主要從事的是產(chǎn)品開發(fā)或者是應(yīng)用軟件(例如客戶關(guān)系管理系統(tǒng),分銷管理系統(tǒng),配送管理系統(tǒng),支付系統(tǒng)等)開發(fā),而在應(yīng)用軟件開發(fā)時(shí),我們一般也要進(jìn)行分層設(shè)計(jì),例如典型的MVC分層設(shè)計(jì),我們可以參考阿里巴巴開發(fā)手冊中給出分層設(shè)計(jì)模型,如圖所示:



          其中,在上圖中的箭頭表示一種直接依賴關(guān)系,開放接口層可以依賴于 Web 層,也可以直接依賴于 Service 層,其它依此類推(具體每層要實(shí)現(xiàn)的邏輯可自行查閱阿里巴巴開發(fā)手冊)。




          總結(jié)(Summary)


          系統(tǒng)分層設(shè)計(jì)是一種設(shè)計(jì)思想,是讓每層對(duì)象都有一個(gè)獨(dú)立職責(zé),再讓多層對(duì)象協(xié)同(耦合)完成一個(gè)完整的功能。這樣做可以更好提高系統(tǒng)可擴(kuò)展性,但同時(shí)也會(huì)增加系統(tǒng)整體運(yùn)維的難度。




          點(diǎn)擊左下角閱讀原文,到?SegmentFault 思否社區(qū)?和文章作者展開更多互動(dòng)和交流。

          -?END -

          瀏覽 67
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  少妇厨房愉情理伦BD在线观看 | 北,麻妃无码69Xx | 久久久久久久成人无码 | 高清无码国产在线观看 | 精品国产内射 |