Skip to content

Instantly share code, notes, and snippets.

@koteq
Created September 14, 2015 15:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save koteq/ea433c0fccc2afe4929b to your computer and use it in GitHub Desktop.
Save koteq/ea433c0fccc2afe4929b to your computer and use it in GitHub Desktop.
Teh MVC... kind of
public class App {
public static void main(String[] args) {
NumberModel model = new NumberModel();
NumberController controller = new NumberController(model);
}
}
public class NumberController {
private final NumberModel model;
public NumberController(NumberModel model) {
this.model = model;
NumberView view = new NumberView(this, model);
}
public void onUserInput(String input) {
try {
int inputNumber = Integer.parseInt(input);
model.setNumber(inputNumber);
}
catch (NumberFormatException e) {
// do nothing
}
}
}
public class NumberModel {
private int number;
private List<NumberObserver> observers = new ArrayList<NumberObserver>();
public NumberModel() {
number = 0;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
notifyObservers();
}
public void addObserver(NumberObserver observer) {
observers.add(observer);
}
public void removeObserver(NumberObserver observer) {
observers.remove(observer);
}
private void notifyObservers() {
for (NumberObserver observer : observers) {
observer.onNumberChanged(number);
}
}
public interface NumberObserver {
void onNumberChanged(int newValue);
}
}
public class NumberView implements NumberModel.NumberObserver {
public NumberView(NumberController controller, NumberModel model) {
model.addObserver(this);
displayNumber(model.getNumber());
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
controller.onUserInput(sc.nextLine());
}
}
@Override
public void onNumberChanged(int newValue) {
displayNumber(newValue);
}
private void displayNumber(int number) {
System.out.println("" + number);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment