9.9接口与工厂(工厂模式)

直接上代码
作者的原话是(如果Games类表示一段复杂的代码,那么这种方式就允许你在不同类型的游戏中复用这段代码.)

public interface Game {
    boolean move();
}
public interface GameFactory {
    Game getGame();
}
class Checkers implements Game {
    private int moves = 0;
    private static final int MOVES = 3;

    public boolean move() {
        System.out.println("Checkers move " + moves);
        return ++moves != MOVES;
    }
}

class CheckersFactory implements GameFactory {
    public Game getGame() {return new Checkers();}
}
class Chess implements Game {

    private int moves = 0;
    private static final int MOVES = 4;


    @Override
    public boolean move() {
        System.out.println("Chess move " + moves);
        return ++moves != MOVES;
    }
}

class ChessFactory implements GameFactory {

    @Override
    public Game getGame() {
        return new Chess();
    }
}

复用在下面这里发生

public class Games {
    public static void playGame(GameFactory factory) {
/////////////////////////////////////////////////////////////////作者的意思是主要可以复用下面这段代码
        Game s = factory.getGame();
        while(s.move())
            ;
/////////////////////////////////////////////////////////////////
    }

    public static void main(String[] args) {
        playGame(new CheckersFactory());
        playGame(new ChessFactory());
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容