JAVA MVC模式
MVC模式定义:
MVC模式代表Model-View-Controller(模型-视图-控制器),该模式用于应用程序的分层开发。
- Model(模型):模型代表一个存取数据的对象和Java POJO,它也可以带有逻辑,在数据变化时,更新控制器。
- View(视图):视图代表模型包含的数据可视化。
- Controller(控制器):控制器作用于模型和视图上,它控制数据流向模型对象。
MVC的实现
构建代码如下:
Student类
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;
}
}
StudentController类
public class StudentController {
private Student model;
private StudentView view;
public void setStudent_na(String name){
model.setName(name);
}
public void setStudent_rollno(String rollna){
model.setRollNo(rollna);
}
public StudentController(Student model, StudentView view) {
this.model = model;
this.view = view;
}
public Student getModel() {
return model;
}
public void setModel(Student model) {
this.model = model;
}
public StudentView getView() {
return view;
}
public void setView(StudentView view) {
this.view = view;
}
public void updateView(){
view.printStudentDetails(model.getName(),model.getRollNo());
}
}
StudentDao类
public class studentDao {
public List<Student> retrieveStudentFromDatabase(){
JDBConnection jdbConnection=new JDBConnection();
String sql="select * from studentdata";
List<Student> studentList=new ArrayList<>();
try {
ResultSet resultSet = jdbConnection.executeQuery(sql);
while(resultSet.next()){
String na=resultSet.getString(1);
String no=resultSet.getString(2);
Student student=new Student();
student.setName(na);
student.setRollNo(no);
studentList.add(student);
}
}catch (Exception e){
e.printStackTrace();
}
finally {
jdbConnection.closeConnecstion();
}
return studentList;
}
}
StudentView类
public class StudentView {
public void printStudentDetails(String studentName,String studentRollNo){
System.out.println("Student: ");
System.out.println("Name: "+studentName);
System.out.println("RollNo: "+studentRollNo);
}
}
main函数操作类
public class MVCPatternDemo {
public static void main(String[] args) {
//从数据库获取学生记录
studentDao studentDao=new studentDao();
List<Student> model=studentDao.retrieveStudentFromDatabase();
for(int i=0;i<model.size();i++){
//创建视图
StudentView view =new StudentView();
StudentController controller=new StudentController(model.get(i),view);
//输出当前视图
controller.updateView();
System.out.println("-----开始操作-----");
//更新数据
controller.setStudent_na("ouguangji");
controller.setStudent_rollno(String.valueOf(i+1));
System.out.println("----结束操作----");
//输出更新后的视图
controller.updateView();
}
}
}
MVC设计模式的优点
-
分工明确:
开发人员可以只关注整个结构中的其中某一层,使用MVC模式可以把数据库开发,程序业务逻辑开发,页面开发分开,每一层都具有相同的特征,方便开发后的维护工作。
-
低耦合:
视图层和业务层分离,这样就允许更改视图代码,
-
复用性高:
类似于多个视图能够共享一个模型,不论你视图层是用flash界面或是wap界面,用一个模型就能处理他们。将数据和业务规则从表示层分开,就可以最大化从用代码。
-
有利于标准化:
有利于通过工程化、工具化产生管理程序代码。