模拟游戏–鸭子的种类
主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。需要模拟的鸭子种类及其特征如下表所示。
为了支持将来能够模拟更多种类鸭子的特征,决定采用策略(Strategy)模式。
类图结构如下:
1.工程文件
2.Duck.java
package simulator_duck;
public interface Duck {
public abstract void playDuck();
}
3.Simulator.java
package simulator_duck;
public class Simulator {
Duck duck;
public void setDuck(Duck duck) {
this.duck=duck;
}
public void play() {
if(duck!=null)
duck.playDuck();
else
System.out.println("没有可模拟的鸭子");
}
}
4.CottonDuck.java
package simulator_duck;
public class CottonDuck implements Duck{
private String phonationCharacteristics="QuackNoWay";
private String flightCharacteristics="FlyNoWay";
private String appearanceCharacteristics="White";
public void playDuck() {
System.out.println("CottonDuck:"+phonationCharacteristics+"\t"
+flightCharacteristics+"\t"+appearanceCharacteristics);
}
}
5.MallardDuck.java
package simulator_duck;
public class MallardDuck implements Duck{
private String phonationCharacteristics="Quack";
private String flightCharacteristics="FlyWithWings";
private String appearanceCharacteristics="Grey feather";
public void playDuck() {
System.out.println("MallardDuck:"+phonationCharacteristics+"\t"
+flightCharacteristics+"\t"+appearanceCharacteristics);
}
}
6.RedHeadDuck.java
package simulator_duck;
public class RedHeadDuck implements Duck{
private String phonationCharacteristics="Quack";
private String flightCharacteristics="FlyWithWings";
private String appearanceCharacteristics="Grey wool - red head";
public void playDuck() {
System.out.println("RedHeadDuck:"+phonationCharacteristics+"\t"
+flightCharacteristics+"\t"+appearanceCharacteristics);
}
}
7.RubherDuck.java
package simulator_duck;
public class RubherDuck implements Duck{
private String phonationCharacteristics="Squeak";
private String flightCharacteristics="FlyNoWay";
private String appearanceCharacteristics="Black and white rubber";
public void playDuck() {
System.out.println("RubherDuck:"+phonationCharacteristics+"\t"
+flightCharacteristics+"\t"+appearanceCharacteristics);
}
}
8.Application.java
package simulator_duck;
public class Application {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Simulator simulator=new Simulator();
simulator.setDuck(new MallardDuck());
simulator.play();
simulator.setDuck(new RedHeadDuck());
simulator.play();
simulator.setDuck(new CottonDuck());
simulator.play();
simulator.setDuck(new RubherDuck());
simulator.play();
}
}