mvc模式

1、什麼是MVC

    一、概念

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

        小編點睛:架構,主要仍是採用封裝(分層)的思想,來下降耦合度,從而使咱們的系統更加的靈活,擴展性更好。web

    二、內容

      Model(模型)是應用程序中用於處理應用程序數據邏輯的部分。數據庫中存取數據。
      View(視圖)是應用程序中處理數據顯示的部分。一般控制器負責從視圖讀取數據,控制用戶輸入,並向模型發送數據
數據庫

        小編點睛:
設計模式

 

          

    大大提升了代碼的可重用性。
       (2)因爲MVC的三個模塊相互獨立,改變其中一個不會影響其餘兩個,因此依據這種設計思想(3)此外,四、缺點

       (1)增長了系統結構和實現的複雜性。架構

          對於簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增長結構的複雜性,並可能產生過多的更新操做,下降運行效率。
  (2)視圖與控制器間的過於緊密的鏈接。
框架

           視圖與控制器是相互分離,但確實聯繫緊密的部件,視圖沒有控制器的存在,其應用是頗有限的,反之亦然,這樣就妨礙了他們的獨立重用。
  (3)視圖對模型數據的低效率訪問。
ide

             依據模型操做接口的不一樣,視圖可能須要屢次調用才能得到足夠的顯示數據。對未變化數據的沒必要要的頻繁訪問,也將損害操做性能。
  (4) 目前,通常高級的界面工具或構造器不支持MVC架構。
工具

              改造這些工具以適應MVC須要和創建分離的部件的代價是很高的,從而形成使用MVC的困難
性能

        小編點睛:根據MVC的優缺點,咱們知道,對於開發存在大量用戶界面,而且業務邏輯複雜的大型應用程序,MVC將會使你的軟件在健壯性、代碼重用和結構方面上一個新的臺階。儘管在最初構建MVC框架時會花費必定的工做量,但從長遠角度看,它會大大提升後期軟件開發的效率。ui

        因此咱們在具體適用時,要綜合考慮其適用範圍,

2、工做原理

    一、web工做原理圖



        小編點睛:

       小編點睛:   二、內部工做原理圖

                                       

        小編點睛:上邊這張圖是MVC的處理過程:三、小例子        (1)先在model層寫一個Dog實體類

 

[csharp] view plain copy
  1. public class Dog  
  2. {  
  3.     public int ID { get; set; }  
  4.     public string Name { get; set; }  
  5.   
  6.     public override string ToString()  
  7.     {  
  8.         return "ID=" + this.ID +",Name=" + this.Name ;  
  9.     }  
  10. }  


       (2)先在controller層寫相應的代碼

 

[csharp] view plain copy
  1. //控制器類(繼承了Controller)  
  2.    public class HomeController : Controller  
  3.    {  
  4.        #region 0.1初始化數據集合 void IntData()  
  5.        /// <summary>  
  6.        /// 初始化數據集合  
  7.        /// </summary>  
  8.        public List<Models.Dog> IntData()  
  9.        {  
  10.            List<Models.Dog> list =new List<Models.Dog >()  {  
  11.                new Dog(){ ID=1,Name ="小樣~~" },  
  12.                new Dog(){ ID=2,Name ="小樣2~~" },  
  13.                new Dog(){ ID=3,Name ="小樣3~~" },  
  14.                new Dog(){ ID=4,Name ="小樣4~~" },  
  15.            };  
  16.            return list;  
  17.        }  
  18.  
  19.        #endregion  
  20.   
  21.        // GET: /Home/  
  22.        /// <summary>  
  23.        /// Action方法(可堪稱MVC設計模式的Model  
  24.        /// </summary>  
  25.        /// <returns></returns>  
  26.        public ActionResult Index()  
  27.        {  
  28.            System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(4000);  
  29.            //2.1處理當前業務(好比讀取數據庫。判斷等)  
  30.            //2.1.1建立一個數據集合(僞數據,並得到數據  
  31.            List<Models.Dog> list = IntData();  
  32.            //2.1.2遍歷集合,生成HTNL代碼,存入builder  
  33.            list.ForEach (d => {  
  34.                sbHtml.Append("<div>" + d.ToString() + "</div>");  
  35.                  
  36.            });  
  37.            //2.2使用viewBag傳輸數據給同名Index.cshtml 視圖  
  38.            //viewBag是一個dynamic類型集合,能夠動態添加任意類型的任意名稱的屬性和值  
  39.            ViewBag.HtmlStr = sbHtml.ToString();  
  40.   
  41.            return View();  
  42.        }  
  43.    }  


       (3)最後在view層顯示數據

 

[csharp] view plain copy
  1. @{  
  2.     Layout = null;  
  3. }  
  4.   
  5. <!DOCTYPE html>  
  6.   
  7. <html>  
  8. <head>  
  9.     <meta name="viewport" content ="width=device-width" />  
  10.     <title>Index</title>  
  11. </head>  
  12. <body>  
  13.     <!-- 至關於把Action中的內容,存放在此處 輸出!-->  
  14.     @Html.Raw(ViewBag.HtmlStr)  
  15. </body>  
  16. </html>  


       (4)運行效果圖

                                

相關文章
相關標籤/搜索