关于java工厂方法设计模式的问题
今天看java编程思想中的接口时,理解不了工厂方法设计模式,希望有人能来帮忙解答下。
书上的代码说的是在一个相同的棋盘上下国际象棋和西洋跳棋,
interface Game{...}
interfacd GameFactory{...}
class Checkers implements Game{...}
class CheckersFactory implements GameFactory
{
public Game getGmae() {return new Checkers();}
}
class Chess implements Game{...}
class ChessFactory implements GameFactory
{
public Game getGmae() {return new Chess();}
}
public class Games
{
public static void playGame(GameFactory factory)
{ Game s=factory.getGame();
}
public static void main(...)
{playGame(new CheckerFactory); playGame(new ChessFatory);}
}
这是书上的代码,我省略了一些跟我问题无关的代码。
我的问题是为什么要这么麻烦,给Checkers和Chess都弄个工厂,然后从工厂里返回类型,可以直接把public static void playGame(GameFactory factory) 改成
public static void playGame(Game factory)不就可以了吗?然后playGame(new CheckerFactory); playGame(new ChessFatory);改成playGame(Checkers);
playGame(Chess); 利用向上转型原理。这样不是可以把上面的那些Factory代码全删掉么?另外Factory模式到底有什么用处。
可能是我没有理解工厂方法设计模式。希望有人能来回答下。