设计模式学习笔记--MVC模式

二十六、MVC模式

MVC模式,Model–View–Controller,用于应用程序的分层设计。

简介

MVC模式是面向对象的Java开发中常用的一种设计模式,将应用程序分层设计,从而使得程序模块可以分工协作。Model层负责数据和部分逻辑的实现、View层主要用于视图显示数据和界面交互、而Controller 则通过控制数据和视图,链接程序的数据和视图层次。

实现

创建一个model的实体类,一个用于显示数据的view类,以及一个用于控制数据和视图的controller类。
mvc
- 创建model类

Student.java

/**
 * Created by thinkpad on 16-12-11.
 * 学生类,在此作为模型类。
 */
public class Student {
    private String rollNo;
    private String name;

    public String getRollNo() {
        return rollNo;
    }

    public void setRollNo(String rollNo) {
        this.rollNo = rollNo;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
  • 创建view视图类

StudnetView.java


/**
 * Created by thinkpad on 16-12-11.
 * view视图类,用于显示model的数据。
 */
public class StudentView {
    public void printStudentDetails(String name,String studentRollNo){
        System.out.printf("Student: name=%s,RollNo=%s \n",name,studentRollNo);
    }
}
  • 创建Controller类

StudentController.java

/**
 * Created by thinkpad on 16-12-11.
 * 控制器类,用于控制数据和视图显示
 */
public class StudentController {
    private Student model;
    private StudentView view;
    //获得数据,构造函数
    public StudentController(Student model,StudentView view){
        this.model = model;
        this.view = view;
    }
    //更新视图
    public void updateView(){
        view.printStudentDetails(model.getName(),model.getRollNo());
    }

    public String getStudentName() {
        return model.getName();
    }

    public void setStudentName(String name) {
       model.setName(name);
    }

    public String getStudentRollNo() {
        return model.getRollNo();
    }

    public void setStudentRollNo(String rollNo) {
        model.setRollNo(rollNo);
    }
}
  • 演示

    MVCPatternDemo.java

/**
 * Created by thinkpad on 16-12-11.
 * 演示MVC模式的用法
 */
public class MVCPatternDemo {
    public static void main(String[] args){
        //从数据获取学生记录
        Student model = retriveStudentFromDatabase();
        //创建视图view,显示输出学生信息。
        StudentView view = new StudentView();
        StudentController controller = new StudentController(model,view);
        controller.updateView();

        //更新数据,从而通过controller来更新view
          controller.setStudentName("Robert");
        controller.updateView();


    }

    private static Student retriveStudentFromDatabase() {
        Student student = new Student();
        student.setName("Tom");
        student.setRollNo("7");
        return student;
    }
}
  • 输出
Student: name=Tom,RollNo=7 
Student: name=Robert,RollNo=7 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值