Skip to content

Commit 3ec72e6

Browse files
committed
easy observer imp without test
1 parent ae9ac0e commit 3ec72e6

12 files changed

Lines changed: 127 additions & 3 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package observer;
2+
3+
import java.util.ArrayList;
4+
5+
public abstract class Arena {
6+
protected GameResult mGameResult;
7+
private ArrayList<ArenaViewer> Views = new ArrayList<ArenaViewer>();
8+
public GameResult getGameResult(){
9+
return mGameResult;
10+
}
11+
public void registerArenaViewer(ArenaViewer viewer){
12+
if(!Views.contains(viewer))Views.add(viewer);
13+
}
14+
public void unregisterArenaViewer(ArenaViewer viewer){
15+
if(Views.contains(viewer))Views.remove(viewer);
16+
}
17+
public void notifyViewers(){
18+
for(ArenaViewer viewer : Views){
19+
viewer.OnGameUpdate(mGameResult);
20+
}
21+
}
22+
public void onNewGameResult(GameResult gameResult ){
23+
mGameResult = gameResult;
24+
notifyViewers();
25+
}
26+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package observer;
2+
3+
public class ArenaGameResult implements GameResult{
4+
5+
public String mWinnerName;
6+
public int mGameNumber;
7+
public ArenaGameResult(String winner , int gameNumber){
8+
this.mWinnerName = winner;
9+
this.mGameNumber = gameNumber;
10+
}
11+
12+
@Override
13+
public String getWinner() {
14+
return mWinnerName;
15+
}
16+
17+
@Override
18+
public int getGameNumber() {
19+
return mGameNumber;
20+
}
21+
22+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package observer;
2+
3+
public interface ArenaViewer {
4+
5+
public void OnGameUpdate(GameResult result);
6+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package observer;
2+
3+
public class DeyuArena extends Arena{
4+
5+
public DeyuArena(){
6+
mGameResult = new ArenaGameResult("", 0);
7+
}
8+
9+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package observer;
2+
3+
import util.JavaLog;
4+
5+
public class DeyuNoGoodViewer implements ArenaViewer , TrashTalkViewer{
6+
private GameResult mGameResult ;
7+
@Override
8+
public void sayTrashTalk() {
9+
JavaLog.d("他媽的 怎麼這" + mGameResult.getGameNumber() + "場比賽,又是" + mGameResult.getWinner() +"這爛咖贏");
10+
}
11+
@Override
12+
public void OnGameUpdate(GameResult result) {
13+
mGameResult = result;
14+
sayTrashTalk();
15+
}
16+
17+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package observer;
2+
3+
import util.JavaLog;
4+
5+
public class DeyuViewer implements ArenaViewer , TrashTalkViewer{
6+
private GameResult mGameResult ;
7+
8+
@Override
9+
public void sayTrashTalk() {
10+
JavaLog.d("怎麼這" + mGameResult.getGameNumber() + "場比賽," + mGameResult.getWinner() +"表現得太精彩了。");
11+
}
12+
13+
@Override
14+
public void OnGameUpdate(GameResult result) {
15+
mGameResult = result;
16+
sayTrashTalk();
17+
}
18+
19+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package observer;
2+
3+
public interface GameResult {
4+
public String getWinner();
5+
public int getGameNumber();
6+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package observer;
2+
3+
public class Go {
4+
public static void main(String[] args) {
5+
Arena mArena = new DeyuArena();
6+
ArenaViewer a = new DeyuNoGoodViewer();
7+
ArenaViewer b = new DeyuViewer();
8+
mArena.registerArenaViewer(a);
9+
mArena.onNewGameResult(new ArenaGameResult("§C¯à¨à", 1));
10+
mArena.registerArenaViewer(b);
11+
mArena.onNewGameResult(new ArenaGameResult("«Ó®ðªº±þ¤â", 2));
12+
}
13+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package observer;
2+
3+
public interface TrashTalkViewer {
4+
public void sayTrashTalk();
5+
6+
}

HeadFirstDesignPatterns/src/test/FirstTest.java renamed to HeadFirstDesignPatterns/src/strategy/test/FirstTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package test;
1+
package strategy.test;
22

33
import static org.junit.Assert.*;
44

0 commit comments

Comments
 (0)