【发布时间】:2018-04-28 08:44:38
【问题描述】:
我已经使用 MVC 模式实现了学生管理(教程:Link)。我决定将学生分为“SingleStudentModel”和“MultipleStudentModel”,但我不确定这对我来说是否有意义。总的来说,我对我的解决方案不满意。是否可以使用一个控制器处理单个学生和多个学生? 如果将模型导入视图类(参见 StudentsView.java)可以吗?
我该如何改进这个项目?
提前致谢。
Student.java(模型,数据类(?))
public class Student {
private String name;
private int nr;
public Student(String _name, int _nr){
this.name = _name;
this.nr = _nr;
}
// get set
}
SingleStudentModel.java(模型)
public class SingleStudentModel {
private Student student;
// get set
}
StudentController.java(控制器 -> SingleStudentModel)
public class StudentController {
private SingleStudentModel model;
private StudentView view;
public StudentController(SingleStudentModel _model, StudentView _view){
this.model = _model;
this.view = _view;
}
// set get
public void updateView(){
view.printStudentDetails(model.getStudent().getName(), model.getStudent().getNr());
}
}
MultipleStudentModel.java(模型)
public class MultipleStudentModel {
private Collection<Student> students = new ArrayList<Student>();
public Collection<Student> getStudents() {
return students;
}
public void setStudents(Student student){
this.students.add(student);
}
}
StudentsController.java(控制器 -> StudentsModel)
public class StudentsController {
private MultipleStudentModel model;
private StudentsView view;
public StudentsController(MultipleStudentModel _model, StudentsView _view){
this.model = _model;
this.view = _view;
}
public void updateView(){
view.printStudentList(model.getStudents());
}
}
StudentView.java
public class StudentView {
public void printStudentDetails(String _name, int _nr){
System.out.println("Student: ");
System.out.println("name: " + _name);
System.out.println("nr: " + _nr);
}
}
StudentsView.java
import com.mvc.model.Student;
import java.util.Collection;
public class StudentsView {
public void printStudentList(Collection<Student> students){
System.out.println("\nStudent list");
for(Student item : students){
System.out.println("name: " + item.getName());
System.out.println("nr: " + item.getNr());
}
}
}
Main.java
public class Main {
public static void main(String [] args){
//Single student
SingleStudentModel model = new SingleStudentModel();
StudentView view = new StudentView();
StudentController controller = new StudentController(model, view);
model.setStudent(new Student("John", 1));
controller.updateView();
//Multiple student
MultipleStudentModel model2 = new MultipleStudentModel();
StudentsView view2 = new StudentsView();
StudentsController controller2 = new StudentsController(model2, view2);
model2.setStudents(new Student("Zelda", 2));
model2.setStudents(new Student("Link", 3));
controller2.updateView();
}
}
【问题讨论】:
-
这似乎更像是一个代码审查问题。我建议您将此类问题发布到 codereview.stackexchange.com 而不是 Stack Overflow。
标签: java design-patterns model-view-controller