Created
September 14, 2015 15:57
-
-
Save koteq/ea433c0fccc2afe4929b to your computer and use it in GitHub Desktop.
Teh MVC... kind of
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class App { | |
public static void main(String[] args) { | |
NumberModel model = new NumberModel(); | |
NumberController controller = new NumberController(model); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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