2014-11-26 3 views
1

이 MVC 패턴 프로그램에서 옵저버 패턴을 구현하는 방법은 다음과 같습니다나는 다음과 같은 클래스와 simplme MVC 패턴 기반 프로그램이

학생

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 StudentController(Student model, StudentView view) { 
     this.model = model; 
     this.view = view; 
    } 

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

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

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

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

    public void updateView() { 
     view.printStudentDetails(model.getName(), model.getRollNo()); 
    } 
} 

StudentView

public class StudentView { 
    public void printStudentDetails(String studentName, String studentRollNo) { 
     System.out.println("Student: "); 
     System.out.println("Name: " + studentName); 
     System.out.println("Roll No: " + studentRollNo); 
    } 
} 

MVCPatternDemo

public class MVCPatternDemo { 
    public static void main(String[] args) { 

     // fetch student record based on his roll no from the database 
     Student model = retriveStudentFromDatabase(); 

     // Create a view : to write student details on console 
     StudentView view = new StudentView(); 

     StudentController controller = new StudentController(model, view); 

     controller.updateView(); 

     // update model data 
     controller.setStudentName("John"); 

     controller.updateView(); 
    } 

    private static Student retriveStudentFromDatabase() { 
     Student student = new Student(); 
     student.setName("Robert"); 
     student.setRollNo("10"); 
     return student; 
    } 
} 

은 지금은 학교 지정을 위해이 프로그램에 옵저버 패턴을 구현해야합니다. 내 주요 질문은 :이 경우 제목 (내 추측 StudentController 수 있지만 잘 모르겠다) 무엇이며/Observer (s) 무엇입니까? (관찰 가능한) 내가 그것을 구현하는 내 프로그램을 작성하는 방법을 요구하고 있지 않다

(내 생각 엔 학생에게 것)하지만, 올바른 방향으로 '푸시'는

답변

2

보통 모델이 될 수 있습니다 좋은 것 . 아이디어는 다른 장소 (컨트롤러)에서 모델을 변경할 수 있으며 변경 사항에 가입 한 다른 모든 모델에 알림이 전송된다는 것입니다. 따라서 컨트롤러는 옵서버입니다. 이 특정 예제에서는 코드에서

controller.updateView(); 

행을 제거하는 옵저버 패턴을 구현할 수 있습니다. 이 모델은 모델의 변경 사항을 수신하고 뷰를 업데이트하는 리스너에만 표시됩니다.