<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ConnectingTheDots</id>
	<title>ConnectingTheDots - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ConnectingTheDots"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ConnectingTheDots&amp;action=history"/>
	<updated>2026-05-15T08:47:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=ConnectingTheDots&amp;diff=30826&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ConnectingTheDots&amp;diff=30826&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;SoftwareDevelopmentMagazine 에 소개된 ModelViewPresenter 관련 구현 예.&lt;br /&gt;
http://www.sdmagazine.com/documents/s=7147/sdm0206b/0206b.htm&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
소스코드를 보면 다음의 클래스들 관계가 MVP 이다.&lt;br /&gt;
Game - Model. 관계는 Presenter 와만 맺는다. 외부에서 이벤트가 발생했을때는 Presenter 를 통해 통지받는다.&lt;br /&gt;
&lt;br /&gt;
BoardPanel - View. 실제 Swing 등 구체적 라이브러리들을 이용, 실제 표현을 한다. BoardPresenter 와 상호참조 관계를 가진다.&lt;br /&gt;
&lt;br /&gt;
BoardPresenter - Presenter. Game 과 BoardPanel 사이의 일종의 Mediator. Game 은 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
관계를 맺는 코드는 Dots.java 에 있다. 즉, initialize() 를 보면 다음의 코드가 나온다.&lt;br /&gt;
       _game = new Game(4, Arrays.asList(new String[] {&amp;quot;JL&amp;quot;, &amp;quot;TL&amp;quot;, &amp;quot;KML&amp;quot;}));&lt;br /&gt;
 &lt;br /&gt;
       BoardPanel boardPanel = new BoardPanel();&lt;br /&gt;
       boardPanel.setGame(_game);&lt;br /&gt;
실제로 BoardPanel.setGame 을 보면&lt;br /&gt;
    public void setGame(Game game) {&lt;br /&gt;
       _presenter = new BoardPresenter(game, this);&lt;br /&gt;
       _pixelSize = getIdealSize();&lt;br /&gt;
       setSize(_pixelSize);&lt;br /&gt;
    }&lt;br /&gt;
이며 BoardPresenter 를 보면&lt;br /&gt;
    public BoardPresenter(Game game, BoardPresenterDrawListener listener) {&lt;br /&gt;
       _game = game;&lt;br /&gt;
       _game.addListener(this);&lt;br /&gt;
       _listener = listener;&lt;br /&gt;
    }&lt;br /&gt;
이다. (BoardPresenter 에서 listener 는 BoardPanel)&lt;br /&gt;
&lt;br /&gt;
그리고 BoardPanel 에서 이벤트 발생시에는&lt;br /&gt;
BoardPanel.mouseReleased -&amp;gt;  BoardPresenter.processClick -&amp;gt; Game.join 식으로 호출되며&lt;br /&gt;
Game 객체의 데이터가 바뀌는 경우에는 (ex : boxClosed)&lt;br /&gt;
Game.boxClosed -&amp;gt; listener.boxClosed (여기서 listener 는 Presenter. Presenter 들은 여러개가 될 수 있다. Game 객체에 addListener 로 등록된 만큼) -&amp;gt; BoardPanel.drawInitials. 식으로 도메인 모델로부터 올라온다.&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>