爲什麼要添加這樣的間接性
創建框架
假設你正在創建一個對弈遊戲系統,例如,在相同的棋盤上下國際象棋和西洋跳棋
/**
* @Description:
*/
public class 工廠方法設計模式2 {
public static void playGame(GameFactory gameFactory){
Game game = gameFactory.getGame();
while (game.move()){
;
}
}
public static void main(String[] args) {
playGame(new CheckersFactory());
playGame(new ChessFactory());
}
}
interface Game{
Boolean move();
}
interface GameFactory{
Game getGame();
}
class Checkers implements Game {
private int moves=0;
public static final int MOVES=3;
@Override
public Boolean move() {
System.out.println("Checkers moves:" +moves);
return ++moves != MOVES;
}
}
class CheckersFactory implements GameFactory{
@Override
public Game getGame() {
return new Checkers();
}
}
class Chess implements Game {
private int moves=0;
public static final int MOVES=4;
@Override
public Boolean move() {
System.out.println("Chess moves:"+moves);
return ++moves != MOVES;
}
}
class ChessFactory implements GameFactory {
@Override
public Game getGame() {
return new Chess();
}
}