Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * mvc.java
- *
- * Compile & run command:
- * javac mvc.java && java MVC
- *
- * Pass data from view to controller
- *
- * This is a very basic example of how you can achieve it in a clean way.
- */
- import java.util.Map;
- import java.util.HashMap;
- import java.util.Observable;
- import java.util.Observer;
- class Person {
- private String name;
- private int age;
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public int getAge() {
- return age;
- }
- public String toString() {
- return name + ". " + age + " years old.";
- }
- }
- class PersonService {
- public Person create(String name, int age) {
- return new Person(name, age);
- }
- }
- interface View {
- public void display();
- public void addObserver(Observer o);
- }
- class CreatePersonView extends Observable implements View {
- public void display() {
- System.out.println("\nWelcome to the create person view!");
- System.out.println("----------------------------------");
- System.out.print("Name: ");
- String name = System.console().readLine().trim();
- System.out.print("Age: ");
- int age = Integer.valueOf(System.console().readLine().trim());
- Map<String, Object> data = new HashMap<String, Object>();
- data.put("name", name);
- data.put("age", age);
- // generate the event
- setChanged();
- notifyObservers(data);
- }
- }
- class Controller implements Observer {
- PersonService service;
- public void setPersonService(PersonService service) {
- this.service = service;
- }
- public void update(Observable sender, Object arg) {
- Map data = (Map)arg;
- Person p = service.create((String)data.get("name"), (Integer)data.get("age"));
- //debug
- System.out.println("Created new person: " + p);
- }
- }
- class MVC {
- public static void main(String[] args) {
- View view = new CreatePersonView();
- Controller controller = new Controller();
- controller.setPersonService(new PersonService());
- view.addObserver(controller);
- view.display();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement