码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2017-06-30 15:46:02      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:set   效率   string   封装   视图   大型网站   添加   三元   head   

参考:《设计模式》

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框架时会花费一定的工作量,但从长远角度看,它会大大提高后期软件开发的效率。

 

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

标签:set   效率   string   封装   视图   大型网站   添加   三元   head   

原文地址:http://www.cnblogs.com/lyggqm/p/7098556.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!