E D R , A S I H C RSS

Connecting The Dots



소스코드를 보면 다음의 클래스들 관계가 MVP 이다.
Game - Model. 관계는 Presenter 와만 맺는다. 외부에서 이벤트가 발생했을때는 Presenter 를 통해 통지받는다.

BoardPanel - View. 실제 Swing 등 구체적 라이브러리들을 이용, 실제 표현을 한다. BoardPresenter 와 상호참조 관계를 가진다.

BoardPresenter - Presenter. Game 과 BoardPanel 사이의 일종의 Mediator. Game 은



관계를 맺는 코드는 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. 식으로 도메인 모델로부터 올라온다.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:00
Processing time 0.0379 sec