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界面,用一個模型就能處理他們。將數據和業務規則從表示層分開,就可以最大化從用代碼。
-
有利於標準化:
有利於通過工程化、工具化產生管理程序代碼。