《滴滴重MVVM框架Chameleon》架構篇讀后感


  由於有關架構知識實在深奧,已經超出了我的修煉 level 。因此,在尊重原創的基礎上,僅僅總結自己的一些感悟,以及對一些未知專業術語進行查閱並解釋。

  該篇介紹了滴滴在 GitHub 上開源的跨端解決方案 Chameleon ,簡寫  CML,中文名:卡梅龍,釋意為變色龍,意味着就像變色龍一樣能夠適應不同環境的跨端整體解決方案,具有易用、開發快、高性能等特點。CML 專注於將一套代碼在多個平台重復使用。

下圖即是變色龍平台的支持平台:

 

 

其中涉及到的架構框架如下圖:

   其中開發模塊中,涉及了視圖層、邏輯層、組件、API組件等,這讓我想到了老師曾經講過的MVC模式,下面特地將MVC模式總結如下:

  一、MVC概念:

     MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。

     MVC概念解釋:

  (1Model(模型)表示應用程序核心,例如,數據庫記錄列表。

  (2View(視圖)顯示數據,例如:數據庫記錄。

  (3Controller(控制器)處理輸入,例如:寫入數據庫記錄。

      視圖和控制器共同構成了用戶接口。並且每個視圖都有一個相關的控制器組件。控制器接受輸入,通常作為將鼠標移動、鼠標按鈕的活動或鍵盤輸入編碼的時間。時間被翻譯成模型或試圖的服務器請求。用戶僅僅通過控制器與系統交互。

  二、MVC組成結構

     模型組件包含應用程序的功能內核,他封裝了相應的數據並輸出執行特定應用程序處理的過程,模型也提供訪問數據的函數,這些數據有獲得待顯示的數據的視圖組件使用。

  三、MVC設計理念

      實現一種動態的程序設計,是后序對程序的修改和擴展簡化,並且使程序某一部分的重復利用稱為可能。

      通過對復雜度的簡化,使程序結構更加直觀。

  將信息的內部表示與信息的呈現方式分離開來,並接受用戶的請求。它分離了組件,並允許有效的代碼重用。即,將模型和視圖的實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如一批統計數據你可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保模型和視圖的同步,一旦模型改變,視圖應該同步更新。

  四、MVC設計特點

      MVC重要特點就是兩種分離:

  視圖和數據模型的分離:使用不同的視圖對相同的數據進行展示;分離可視和不可視的組件,能夠對模型進行獨立測試。因為分離了可視組件減少了外部依賴利於測試。(數據庫也是一種外部組件)

  視圖和表現邏輯(Controller)的分離:Controller是一個表現邏輯的組件,並非一個業務邏輯組件。MVC可以作為表現模式也可以作為建構模式,意味這Controller也可以是業務邏輯。分離邏輯和具體展示,能夠對邏輯進行獨立測試。

      優點:耦合性低;重用性高;生命周期成本低;部署塊;可維護性高;有利軟件工程化管理。

      缺點:沒有明確的定義;不適合小型,中等規模的應用程序;增加系統結構和實現的復用性;視圖與控制器間的過於緊密的連接;視圖對模型數據的低效率訪問;一般高級的界面工具或構造器不支持模式。

  八、MVC應用實例

  應用於基於MVC架構模式的框架,常見的服務器端MVC框架有:StrutsSpring MVCASP.NET MVCZend FrameworkJSF;常見前端MVC框架:angularjsreactjsbackbone;由MVC演化出了另外一些模式如:MVPMVVM

    Spring MVC主要由DispatcherServlet、處理器映射、處理器(控制器)、視圖解析器、視圖組成。他的兩個核心是兩個核心:

  處理器映射:選擇使用哪個控制器來處理請求

      視圖解析器:選擇結果應該如何渲染

  通過以上兩點,Spring MVC保證了如何選擇控制處理請求和如何選擇視圖展現輸出之間的松耦合。

      Spring MVC運行原理中涉及的名詞解釋如下:

      (1)Http請求:客戶端請求提交到DispatcherServlet

     (2)尋找處理器:由DispatcherServlet控制器查詢一個或多個HandlerMapping,找到處理請求的Controller

     (3)調用處理器:DispatcherServlet將請求提交到Controller

     (4)調用業務處理和返回結果:Controller調用業務邏輯處理后,返回ModelAndView

     (5)處理視圖映射並返回模型: DispatcherServlet查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖。

     (6)Http響應:視圖負責將結果顯示到客戶端。

     (7)Spring MVC框架與MVC架構模式聯系在於:SpringMVC中並沒有涉及有關於Controller接口規范的實現,SpringMVC是通過調用Handler來實現Controller這一層的。

     (8)SpringMVC使用了適配器模式,前端控制器使用HandlerAdapter來調用不同的Controller,然后才是Controller調用Model產生數據模型;產生的數據模型將會再次返回到前端控制器,並由前端控制器決定使用不同的模板引擎將頁面進行渲染。

參考博客:https://www.cnblogs.com/xiaxiaoshu/p/9067390.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM