java工厂模式编写小游戏

来源:互联网 发布:centos mini desktop 编辑:程序博客网 时间:2024/06/11 09:54

        本文带你学习java工厂设计模式的简单设计方法。Java工厂设计模式是一个很实用的软件设计方法,为了增加

学习兴趣,我们利用该模式编写一个简单的游戏框架,模拟抛硬币和投骰子的功能。一听说框架,可能很多初学者

会被吓到,放心,本框架只有60+行代码,没有任何难度,绝逼不会难到你!
       下面开始教程:
       首先创建两个接口,代码如下:
import java.util.*;

interface Game{
 public void startGame();
}
interface GameFactory{
 Game getGame();
}
         然后是接口的实现部分。这部分我们实现的抛硬币的具体实现过程。Random对象产生随机数。
 rand对象可以调用方法nextInt(2),随机产生一个0或1的数(模拟硬币正反面)。
 如果是1,控制台输出”Up!“(正面),否则输出”Down!“(反面)。
class CoinGame implements Game{
 Random rand = new Random();
 public void startGame(){
  System.out.println("CoinGame Start!");
  int i = rand.nextInt(2);
  if(i==1)
   System.out.println("Up!");
  else
   System.out.println("Down!");
 }
}

           CoinGameFactory类是Game的工厂类,所谓工厂,顾名思义就是生产什么东西的。这里我们用它生产对象,只是我们具体化了该工厂,让它为我们
 生产Coin对象。
class CoinGameFactory implements GameFactory{
 public Game getGame(){
  return new CoinGame();
 }
}


           以上是抛硬币部分的实现,用同样的方法,我们完成投骰子游戏:
 class DiceGame implements Game{
 Random rand = new Random();
 public void startGame(){
  System.out.println("DiceGame Start!");
  int i = rand.nextInt(6);
  switch(i){
   case 0:System.out.println(i+1);
   break;
   case 1:System.out.println(i+1);
   break;
   case 2:System.out.println(i+1);
   break;
   case 3:System.out.println(i+1);
   break;
   case 4:System.out.println(i+1);
   break;
   case 5:System.out.println(i+1);
   break;
   default:System.out.println("Error!");
  }
 }
}
class DiceGameFactory implements GameFactory{
 public Game getGame(){
  return new DiceGame();
 }
}

最后编写游戏的测试方法playGame(GameFactory fact),该方法接受一个GameFactory对象,然后通过该对象得到我们的游戏,并开始游戏。
public class myGame{
 public static void playGame(GameFactory fact){
  Game game  = fact.getGame();
  game.startGame();
 }
 public static void main(String[] args){
  playGame(new CoinGameFactory());
  playGame(new DiceGameFactory());
 }
}


游戏测试的结果如图:

playGame(new CoinGameFactory());
playGame(new DiceGameFactory());

        这两行代码体现了我们可以根据需要创建我们想玩的游戏(抛硬币或者投骰子)。
以上就是教程的全部内容,写的比较粗糙,感谢您的宽容!

0 0