這是一個觀察實施。首先所有的接口:
public interface Observer
{
public void notifyMe();
}
然後誰想要得到通知:
public class Player implements Observer
{
@Override public void notifyMe() {
/* do something */
}
}
public class Judge implements Observer
{
@Override public void notifyMe() {
/* do something */
}
}
那麼誰負責通知:
public class Game
{
private ArrayList<Observer> listOfObserver;
public Game() {
listOfObserver = new ArrayList<>();
}
public void registerObserver(Observer observer) {
listOfObserver.add(observer);
}
public void startGame() {
...
...
...
/* when something important happens */
for (int i = 0; i < listOfObserver.size(); i++)
listOfObserver.notify();
...
...
...
}
}
,然後將main()
功能:
public class Main
{
public static void main(String args[]) {
Player player1 = new Player();
Player player2 = new Player();
Player player3 = new Player();
Player player4 = new Player();
Judge judge = new Judge();
Game game = new Game();
game.registerObserver(player1);
game.registerObserver(player2);
game.registerObserver(player3);
game.registerObserver(player4);
game.registerObserver(judge);
game.startGame();
}
}
班級確實不「溝通」。 _Instances_可能會。 – moonwave99