SoftwareDevelopmentMagazine μ μκ°λ ModelViewPresenter κ΄λ ¨ ꡬν μ.
http://www.sdmagazine.com/documents/s=7147/sdm0206b/0206b.htm
http://www.sdmagazine.com/documents/s=7147/sdm0206b/0206b.htm
μμ€μ½λλ₯Ό 보면 λ€μμ ν΄λμ€λ€ κ΄κ³κ° MVP μ΄λ€.
Game - Model. κ΄κ³λ Presenter μλ§ λ§Ίλλ€. μΈλΆμμ μ΄λ²€νΈκ° λ°μνμλλ Presenter λ₯Ό ν΅ν΄ ν΅μ§λ°λλ€.
Game - Model. κ΄κ³λ Presenter μλ§ λ§Ίλλ€. μΈλΆμμ μ΄λ²€νΈκ° λ°μνμλλ Presenter λ₯Ό ν΅ν΄ ν΅μ§λ°λλ€.
BoardPanel - View. μ€μ Swing λ± κ΅¬μ²΄μ λΌμ΄λΈλ¬λ¦¬λ€μ μ΄μ©, μ€μ ννμ νλ€. BoardPresenter μ μνΈμ°Έμ‘° κ΄κ³λ₯Ό κ°μ§λ€.
κ΄κ³λ₯Ό λ§Ίλ μ½λλ Dots.java μ μλ€. μ¦, initialize() λ₯Ό 보면 λ€μμ μ½λκ° λμ¨λ€.
~cpp _game = new Game(4, Arrays.asList(new String[] {"JL", "TL", "KML"})); BoardPanel boardPanel = new BoardPanel(); boardPanel.setGame(_game);μ€μ λ‘ BoardPanel.setGame μ 보면
~cpp public void setGame(Game game) { _presenter = new BoardPresenter(game, this); _pixelSize = getIdealSize(); setSize(_pixelSize); }μ΄λ©° BoardPresenter λ₯Ό 보면
~cpp public BoardPresenter(Game game, BoardPresenterDrawListener listener) { _game = game; _game.addListener(this); _listener = listener; }μ΄λ€. (BoardPresenter μμ listener λ BoardPanel)
κ·Έλ¦¬κ³ BoardPanel μμ μ΄λ²€νΈ λ°μμμλ
BoardPanel.mouseReleased -> BoardPresenter.processClick -> Game.join μμΌλ‘ νΈμΆλλ©°
Game κ°μ²΄μ λ°μ΄ν°κ° λ°λλ κ²½μ°μλ (ex : boxClosed)
Game.boxClosed -> listener.boxClosed (μ¬κΈ°μ listener λ Presenter. Presenter λ€μ μ¬λ¬κ°κ° λ μ μλ€. Game κ°μ²΄μ addListener λ‘ λ±λ‘λ λ§νΌ) -> BoardPanel.drawInitials. μμΌλ‘ λλ©μΈ λͺ¨λΈλ‘λΆν° μ¬λΌμ¨λ€.
BoardPanel.mouseReleased -> BoardPresenter.processClick -> Game.join μμΌλ‘ νΈμΆλλ©°
Game κ°μ²΄μ λ°μ΄ν°κ° λ°λλ κ²½μ°μλ (ex : boxClosed)
Game.boxClosed -> listener.boxClosed (μ¬κΈ°μ listener λ Presenter. Presenter λ€μ μ¬λ¬κ°κ° λ μ μλ€. Game κ°μ²΄μ addListener λ‘ λ±λ‘λ λ§νΌ) -> BoardPanel.drawInitials. μμΌλ‘ λλ©μΈ λͺ¨λΈλ‘λΆν° μ¬λΌμ¨λ€.