zoukankan      html  css  js  c++  java
  • 三层架构与MVC & 设计模式的较量

    刚刚学习了三层架构,并且正在实际应用中,但随着学习的深入,又了解到了一个叫MVC的东西,(早在设计模式中就听到过MVC,仅仅是简单查了一下什么意思.)如今正好把这三个东西放在一起聊聊.

     

    三层

    是一个分层式的软件体系架构设计,它可适用于不论什么一个项目。

    它是从整个应用程序架构的角度把程序分为三层UI,BLL,DAL当然假设程序须要,还能够分多层)。

    三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序猿更加专注的处理某阶段的业务逻辑。

    比方将数据库操作代码封装到一层中,提供一些方法依据參数直接返回用户须要的对应数据,这样在处理详细的业务逻辑的时候。就不用关心数据的存储问题了。

    详见

    http://blog.csdn.net/u010028869/article/details/24711163

     

    MVC

    全名是Model ViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范。

    它强制性的使应用程序输入处理输出分开。使用MVC应用程序被分成三个核心部件:模型视图控制器

    它们各自处理自己的任务。

         Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。

                    通常模型对象负责在数据库中存取数据。

         View(视图)是应用程序中处理数据显示的部分。

                   通常视图是根据模型数据创建的。

         Controller(控制器)是应用程序中处理用户交互的部分。

                  通常控制器负责从视图读取数据。控制用户输入。并向模型发送数据。

     

    MVC 分层有助于管理复杂的应用程序,由于能够使我们在一个时间内专门关注一个方面。

    比如,能够在不依赖业务逻辑的情况下专注于视图设计。同一时候MVC使应用程序的測试更加easy。

     

    MVC和三层架构是不同的

    (就表面知识来说)

    三层架构是界面层(UI)业务逻辑层(BLL)和数据訪问层(DAL)构成的,而MVC是模型层(M)界面层(View)和控制层(Controller)构成的,并且他们之间也不是一一相应.

    假设硬要给他们相应的话,那么三层架构中的UI相应MVC中的viewjsp),都是用于显示以及获取界面的数据;三层架构中的BLL层和DAL层相应MVC中的Modeljavabean)层都是用于处理上层传递来的数据以及从数据库获取的数据的。MVC中的ControllerServlet)最多算是三层架构中的UI的一部分,也就我们常说的是Servlet

    例如以下图所看到的:

                       

     

    MVC和三层架构是同样的

    (就他们的目的来说)

    先驱们为什么会设计出MVC和三层架构呢?它们有这一个共同的目标!----分层。解耦!

    从解耦的角度来看三层架构和MVC事实上他们是一致的,仅仅只是划分的方法不一样罢了。

    馒头和面条。表面上看他们不一样可是他们核心是一致的,都是面……

     

    三层&MVC与设计模式的较量

    首先MVC不是设计模式,它同三层一样都是架构级别的,是一种架构模式.

     

    MVC框架与设计模式尽管相似,但却有着根本的不同。

    设计模式是对在某种环境中重复出现的问题以及解决该问题的方案的描写叙述,它比框架更抽象;框架能够用代码表示,也能直接运行或复用。而对模式而言仅仅有实例才干用代码表示;设计模式是比框架更小的元素。一个框架中往往含有一个或多个设计模式。框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。

     

    总而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧。对详细问题提出解决方式,以提高代码复用率,减少耦合度。

    尽管MVC的学习还没開始,先提前接触下,有什么错误的地方请指正!

     

     

     

     

     

  • 相关阅读:
    PHP获取当前服务器版本,Ip等详细信息
    Alipay 支付类
    php对接app支付宝支付出错Cannot redeclare Decrypt()
    Alipay支付宝支付 报错 invalid [default store dir]: /tmp/
    C# .net 高清压缩图片 合并图片方法
    csharp C#数字字符串排序orderby的问题解决
    tesseract 4.0 ocr图像识别利器,可识别文字。图片越高清越准确
    mysql update ...select的使用 & update 遇到 disable safe 的解决方法
    在Visual Studio 2013中安装Mysql for EntityFramework
    Mysql 中如何创建触发器
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5192802.html
Copyright © 2011-2022 走看看