1,Test类,可以进行单个命令,也可以进行多个命令
package com.dayuanit.MarsCar.test;
import com.dayuanit.MarsCar.Car.MarsCar;
public class Test {
public static void main(String[] args) {
String order = "w";
MarsCar ms = new MarsCar("haha");
//ms.process("w");
ms.processes("w", "s", "d", "g");
}
}
D:\java312\MarsCar\MarsCarMyselt>javac -d classes src/*.java
D:\java312\MarsCar\MarsCarMyselt>java -cp .;classes com.dayuanit.MarsCar.test.Te
st
w
0 1
s
0 0
d
1 0
g
1 0
2,MarsCar类
package com.dayuanit.MarsCar.Car;
import com.dayuanit.MarsCar.map.Point;
import com.dayuanit.MarsCar.auto.Engine;
import com.dayuanit.MarsCar.factory.EngineFactory;
public class MarsCar {
private String name;
private Point point;
private Engine engine;
public MarsCar() {
}
public MarsCar(String name) {
this.name = name;
this.point = new Point();
}
public void processes(String ... orders) {
for(String order:orders) {
process(order);
}
}
public void process(String order) {
System.out.println(order);
EngineFactory enginefactory = new EngineFactory();
engine = enginefactory.creatEngine(order);
if(null !=engine) {
engine.move(point);
}
System.out.println(point.getXpoint()+ " " + point.getYpoint());
}
}
3.MarsMap类
package com.dayuanit.MarsCar.map;
import com.dayuanit.MarsCar.map.Point;
public class MarsMap{
public static final int MAX_xpoint = 9;
public static final int MIN_xpoint = 0;
public static final int MAX_ypoint = 9;
public static final int MIN_ypoint = 0;
public static boolean checkMaxYpoint(Point point) {
return MAX_ypoint > point.getYpoint() + 1;
}
public static boolean checkMinYpoint(Point point) {
return MIN_ypoint <= point.getYpoint() - 1;
}
public static boolean checkMaxXpoint(Point point) {
return MAX_xpoint > point.getYpoint() + 1;
}
public static boolean checkMinXpoint(Point point) {
return MIN_xpoint <= point.getYpoint() - 1;
}
}
4,Point类
package com.dayuanit.MarsCar.map;
public class Point {
private int xpoint;
private int ypoint;
public Point() {
}
public Point(int xpoint, int ypoint) {
this.xpoint = xpoint;
this.ypoint = ypoint;
}
public void setXpoint(int xpoint) {
this.xpoint = xpoint;
}
public int getXpoint() {
return xpoint;
}
public void setYpoint(int ypoint) {
this.ypoint = ypoint;
}
public int getYpoint() {
return ypoint;
}
}
5,Engine类
package com.dayuanit.MarsCar.auto;
import com.dayuanit.MarsCar.map.Point;
public abstract class Engine {
public abstract void move(Point point);
}
6,ForwardEngine类
package com.dayuanit.MarsCar.auto;
import com.dayuanit.MarsCar.map.MarsMap;
import com.dayuanit.MarsCar.map.Point;
public class ForwardEngine extends Engine {
public static final String ORDER = "w";
public void move(Point point) {
if(MarsMap.checkMaxYpoint(point)) {
point.setYpoint(point.getYpoint() + 1);
}
}
}
7,BackEngine类
package com.dayuanit.MarsCar.auto;
import com.dayuanit.MarsCar.map.MarsMap;
import com.dayuanit.MarsCar.map.Point;
public class BackEngine extends Engine {
public static final String ORDER = "s";
public void move(Point point) {
if(MarsMap.checkMinYpoint(point)) {
point.setYpoint(point.getYpoint() - 1);
}
}
}
8,LeftEngine类
package com.dayuanit.MarsCar.auto;
import com.dayuanit.MarsCar.map.MarsMap;
import com.dayuanit.MarsCar.map.Point;
public class LeftEngine extends Engine {
public static final String ORDER = "a";
public void move(Point point) {
if(MarsMap.checkMinXpoint(point)) {
point.setXpoint(point.getXpoint() -1);
}
}
}
9,RightEngine类
package com.dayuanit.MarsCar.auto;
import com.dayuanit.MarsCar.map.MarsMap;
import com.dayuanit.MarsCar.map.Point;
public class RightEngine extends Engine {
public static final String ORDER = "d";
public void move(Point point) {
if(MarsMap.checkMaxXpoint(point)) {
point.setXpoint(point.getXpoint() + 1);
}
}
}
10,EngineFactory类
package com.dayuanit.MarsCar.factory;
import com.dayuanit.MarsCar.auto.ForwardEngine;
import com.dayuanit.MarsCar.auto.BackEngine;
import com.dayuanit.MarsCar.auto.LeftEngine;
import com.dayuanit.MarsCar.auto.RightEngine;
import com.dayuanit.MarsCar.auto.Engine;
public class EngineFactory {
public Engine creatEngine(String order) {
Engine engine = null;
if(ForwardEngine.ORDER.equals(order)) {
engine = new ForwardEngine();
}
if(BackEngine.ORDER.equals(order)) {
engine = new BackEngine();
}
if(LeftEngine.ORDER.equals(order)) {
engine = new LeftEngine();
}
if(RightEngine.ORDER.equals(order)) {
engine = new RightEngine();
}
return engine;//返回engine到MarsCar进行判断
}
}