• 深入理解MVC模式


    一,什么是MVC模式

    该模式是一种软件设计典范,他把软件系统划分为三个基本部分:模型层(Model)、视图层(View)、控制器(Controller)

    *Model(模型)表示应用程序核心(比如数据库记录列表)

    *View(视图)显示数据(数据库记录)

    *Controller(控制器)处理输入(写入数据库记录)

    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据

    View(视图)是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的

    Controller(控制器)是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据

    二,MVC模式的目的

    第一,其目的是实现程序的动态设计,使后续程序的修改和扩展简化,并且能够使程序的某一部份的重复利用成为可能

    第二,有助于管理复杂的应用程序,我们可以在一个时间专门关注一个方面,同事也让应用程序的测试更加容易

    第三,简化了分组开发,不同的人员可同时开发视图、控制器逻辑、模型逻辑,加快了开发速度

    三、MVC工作原理图

    mvc工作原理图草图

    注:什么是Javabean?

    JavaBean:它是一个简单的Java类。这个类中拥有get或set方法即可,但要求这个类必须有一个公开的空参数的构造函数。并拥有一些简单的逻辑参与。但是在实际应用中,经常只需要类中添加get或set方法的简单Java类。在开发中经常把这样的类称为JavaBean对象或者实体类对象。这样的类开发中经常书写在domain或者beans包下。举例如下:

    image

    public class User {

    private String id;

    private String username;

    private String password;

    public String getId() {

    return id;

    }

    public void setId(String id) {

    this.id = id;

    }

    public String getUsername() {

    return username;

    }

    public void setUsername(String username) {

    this.username = username;

    }

    public String getPassword() {

    return password;

    }

    public void setPassword(String password) {

    this.password = password;

    }

    }

    四,MVC模式的优点

    第一,开发人员可以只关注三层中的其中的某一层

    第二,可以很容易的用新的实现来替换原有层次的实现,可维护性提高了

    第三,可以降低层与层之间的依赖,耦合性降低了

    第四,有利于标准化和软件工程化管理

    第五,利于各层逻辑的复用,重用性提高了

    五,MVC模式的缺点

    第一,增加了系统结构和实现的复杂性

    对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

    第二,不适合小型或者中等规模的应用程序

    花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失

    第三,视图与控制器连接的过于紧密

    视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

    第四,视图对模型数据的低效率访问

    依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

  • 相关阅读:
    [IOS+PHP Jason格式的发送与解析]
    SQL查询排序某字段并选前N条数据
    [IOS Tableview] cell自定义view显示错误问题
    [IOS多线程]的使用:防止进行HTTP数据请求时,UI卡死。
    [IOS NSUserDefaults]的使用:登陆后不再显示登录界面。
    Rafy框架
    jmeter压测-负载配置
    定时任务的实现方式
    Storm学习笔记
    Java线程池的实现
  • 原文地址:https://www.cnblogs.com/lizhaowen/p/6024850.html
Copyright © 2020-2023  润新知