MVC模式

本文详细介绍了MVC、MVP和MVVM三种常见的软件设计模式,通过实例解析了它们在Web和客户端开发中的应用。MVC模式中,Controller职责过重,而MVP模式则将Controller替换为Presenter,增强了View的职责。MVVM模式进一步优化,通过数据绑定实现View和Model的自动同步,减轻了手动更新UI的工作。文章强调,选择哪种模式应根据项目需求,避免过度设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上谈论MVC,MVP和MVVM模式甚多,也是非常基础的面试题之一。

这三种模式Web网页开发、Client终端开发 (Android, iOS,家庭PC) 中应用甚广。然而网上大多只是画画图,总结下优缺点,却没有好好写简单粗暴的例子来加深新人的理解。这也是这篇文章的诞生初衷。


MVC模式

 

MVC模式,即是Model-View-Controller模式,MVC体现的是应用程序设计中的分层思想。MVC模式三层主要各自完成这些工作:

Model层:

            1. 建立数据模型:存储数据,并考虑数据持久化和读写;

            2. 封装数据和业务逻辑:提供函数供controller调用;

Controller层:

            1. 获取Model数据:调用函数得到返回数据,渲染到View;

            2. 设置View:组装View和View响应事件,处理View的生命周期;

View层:

             1. 通过UI元素展示数据;

             2. 接受用户操作并做出反馈;

那么结合以上概念,可以在Android写成该例:

首先是Model层,建立Person类,封装两个数据域age,name并提供Mutator/Accessor( 国人爱称set/get)给其他类调用获取数据。

public class Person {

    private int age;
    private String name;

    public int getAge(){
        return this.age;
    }
    public void setAge(int mAge){
        age = mAge;
    }

    public String getName(){
        return this.name;
    }
    public void setName(String mName){
        name = mName;
    }
}

那么Controller层则是对应的Activity:

public class Controller extends AppCompatActivity {
    private Person person;
    private TextView tv_name;
    private TextView tv_age;

    @Override
    public void onCreate(Bundle savedInstance){
        super.onCreate(savedInstance);
        setContentView(R.layout.activity_mvc);

        person = new Person();
        person.setName("tremendous");
        person.setAge(25);
        tv_name = (TextView) findViewById(R.id.tv_name);
        tv_age = (TextView) findViewById(R.id.tv_age);

        setData(person);
    }

    public void setData(Person p){
        tv_name.setText(p.getName());
        tv_age.setText(p.getAge());
    }

}

View层呢?则是对应activity_mvc.xml (也就是setContentView()中间的参数):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值