• [框架模式]经典的模型视图控制器模式MVC


    参考:《设计模式》

    http://blog.csdn.net/u010168160/article/details/43150049

    百度百科

    引言:

    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
      通常模型对象负责在数据库中存取数据。
    View(视图)是应用程序中处理数据显示的部分。
      通常视图是依据模型数据创建的。
    Controller(控制器)是应用程序中处理用户交互的部分。
      通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
     
      MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
      MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
    MVC就是类似三层的一种架构,主要还是采用封装(分层)的思想,来降低耦合度,从而使我们的系统更加的灵活扩展性更好
     
    详述:

    类的模型/视图/控制器(M o d e l / Vi e w / C o n t r o l l e r)三元组( M V C )被用来 构建用户界面。

    透过MVC 来看设计模式将帮助我们理解“模式”这一术语的含义。 M V C包括三类对象。模型 M o d e l是应用对象,视图 Vi e w是它在屏幕上的表示,控制器 C o n t r o l l e r定义用户界面对用户输入的响应方式。不使用 M V C,用户界面设计往往将这些对象 混在一起,而M V C则将它们分离以提高灵活性和复用性。

    M V C通过建立一个“订购/通知”协议来分离视图和模型。视图必须保证它的显示正确地 反映了模型的状态。一旦模型的数据发生变化,模型将通知有关的视图,每个视图相应地得 到刷新自己的机会。这种方法可以让你为一个模型提供不同的多个视图表现形式,也能够为 一个模型创建新的视图而无须重写模型。

    内部工作原理:

    MVC的处理过程:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理。然后模型根据用户请求进行相应的业务逻辑处理,并返回数据。最后控制器调用相应的视图格式化模型返回的数据,并通过视图呈现给用户。

    小例子:

    model层

    public class Dog  
    {  
        public int ID { get; set; }  
        public string Name { get; set; }  
      
        public override string ToString()  
        {  
            return "ID=" + this.ID +",Name=" + this.Name ;  
        }  
    }  

    control层

    //控制器类(继承了Controller)  
       public class HomeController : Controller  
       {  
           #region 0.1初始化数据集合 void IntData()  
           /// <summary>  
           /// 初始化数据集合  
           /// </summary>  
           public List<Models.Dog> IntData()  
           {  
               List<Models.Dog> list =new List<Models.Dog >()  {  
                   new Dog(){ ID=1,Name ="小样~~" },  
                   new Dog(){ ID=2,Name ="小样2~~" },  
                   new Dog(){ ID=3,Name ="小样3~~" },  
                   new Dog(){ ID=4,Name ="小样4~~" },  
               };  
               return list;  
           }  
     
           #endregion  
      
           // GET: /Home/  
           /// <summary>  
           /// Action方法(可堪称MVC设计模式的Model  
           /// </summary>  
           /// <returns></returns>  
           public ActionResult Index()  
           {  
               System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(4000);  
               //2.1处理当前业务(比如读取数据库。判断等)  
               //2.1.1创建一个数据集合(伪数据,并获得数据  
               List<Models.Dog> list = IntData();  
               //2.1.2遍历集合,生成HTNL代码,存入builder  
               list.ForEach (d => {  
                   sbHtml.Append("<div>" + d.ToString() + "</div>");  
                     
               });  
               //2.2使用viewBag传输数据给同名Index.cshtml 视图  
               //viewBag是一个dynamic类型集合,可以动态添加任意类型的任意名称的属性和值  
               ViewBag.HtmlStr = sbHtml.ToString();  
      
               return View();  
           }  
       }  

    view层

    @{  
        Layout = null;  
    }  
      
    <!DOCTYPE html>  
      
    <html>  
    <head>  
        <meta name="viewport" content ="width=device-width" />  
        <title>Index</title>  
    </head>  
    <body>  
        <!-- 相当于把Action中的内容,存放在此处 输出!-->  
        @Html.Raw(ViewBag.HtmlStr)  
    </body>  
    </html>

    输出结果:

    小结:

    对于开发存在大量用户界面,并且业务逻辑复杂的大型应用程序,MVC将会使你的软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC框架时会花费一定的工作量,但从长远角度看,它会大大提高后期软件开发的效率。

  • 相关阅读:
    spart快速大数据分析学习提纲(一)
    Zookeeper的设计模式之观察者模式(十)
    shuffle机制和TextInputFormat分片和读取分片数据(九)
    MapReduce程序开发之流量求和(八)
    分布式系统间通信之RPC简单Demo(七)
    使用JAVA客户端对HDFS进行代码编写(五)
    分布式系统间通信之RPC的基本概念(六)
    DataNode工作原理(四)
    NameNode元数据的管理机制(三)
    javaweb项目部署到服务器(树莓派)上全过程——部署步骤记录与总结
  • 原文地址:https://www.cnblogs.com/lyggqm/p/7098556.html
Copyright © 2020-2023  润新知