View difference between Paste ID: qCwEX6eP and ytnkqz67
SHOW: | | - or go back to the newest paste.
1
/*
2
 * mvc.java
3
 *
4
 * Compile & run command:
5
 *     javac mvc.java && java MVC
6
 *
7
 * Pass data from view to controller
8
 *
9
 * This is a very basic example of how you can achieve it in a clean way.
10
 */
11
import java.util.Map;
12
import java.util.HashMap;
13
import java.util.Observable;
14
import java.util.Observer;
15
16
class Person {
17
	private String name;
18
	private int age;
19
	
20
	public Person(String name, int age) {
21
		this.name = name;
22
		this.age = age;
23
	}
24
	
25
	public String getName() {
26
		return name;
27
	}
28
	
29
	public int getAge() {
30
		return age;
31
	}
32
	
33
	public String toString() {
34
		return name + ". " + age + " years old.";
35
	}
36
}
37
38
class PersonService {
39
	public Person create(String name, int age) {
40
		return new Person(name, age);
41
	}
42
}
43
44
interface View {
45
	public void display();
46
	public void addObserver(Observer o);
47
}
48
49
class CreatePersonView extends Observable implements View  {
50
	public void display() {
51
		System.out.println("\nWelcome to the create person view!");
52
		System.out.println("----------------------------------");
53
		
54
		System.out.print("Name: ");
55
		String name = System.console().readLine().trim();
56
		
57
		System.out.print("Age: ");	
58
		int age = Integer.valueOf(System.console().readLine().trim());
59
		
60
		Map<String, Object> data = new HashMap<String, Object>();
61
		data.put("name", name);
62
		data.put("age", age);
63
		
64
		// generate the event
65
		setChanged();
66
		notifyObservers(data);
67
	}
68
}
69
70
class Controller implements Observer {
71
	
72
	PersonService service;
73
	
74
	public void setPersonService(PersonService service) {
75-
        this.service = service;
75+
                this.service = service;
76-
    }
76+
        }
77
    
78
	public void update(Observable sender, Object arg) {
79
		Map data = (Map)arg;
80
		Person p = service.create((String)data.get("name"), (Integer)data.get("age"));
81
		
82
		//debug
83
		System.out.println("Created new person: " + p);
84
	}
85
}
86
87
88
class MVC {
89
	public static void main(String[] args) {
90
		View view = new CreatePersonView();
91
		Controller controller = new Controller();
92
		controller.setPersonService(new PersonService());
93
		view.addObserver(controller);
94
		view.display();
95
	}
96
}