import java.util.ArrayList;
import java.util.Iterator;
public class TestRobotBuilder {
public static void main(String args[]) {
Machine builder;
RobotBuildable robot;
String response = "a";
builder = new Cooker();
// builder = new AutomotiveRobotBuilder();
// Start the construction process.
builder.addStart();
builder.addTest();
builder.addAssemble();
builder.addStop();
robot = builder.getRobot();
robot.go();
}
}
interface Machine {
public void addStart();
public void addGetParts();
public void addAssemble();
public void addTest();
public void addStop();
public RobotBuildable getRobot();
}
interface RobotBuildable {
public void go();
}
class Cooker implements Machine {
CookerBuildable robot;
ArrayList actions;
public Cooker() {
robot = new CookerBuildable();
actions = new ArrayList();
}
public void addStart() {
actions.add(new Integer(1));
}
public void addGetParts() {
actions.add(new Integer(2));
}
public void addAssemble() {
actions.add(new Integer(3));
}
public void addTest() {
actions.add(new Integer(4));
}
public void addStop() {
actions.add(new Integer(5));
}
public RobotBuildable getRobot() {
robot.loadActions(actions);
return robot;
}
}
class Car implements Machine {
CarBuildable robot;
ArrayList actions;
public Car() {
robot = new CarBuildable();
actions = new ArrayList();
}
public void addStart() {
actions.add(new Integer(1));
}
public void addGetParts() {
actions.add(new Integer(2));
}
public void addAssemble() {
actions.add(new Integer(3));
}
public void addTest() {
actions.add(new Integer(4));
}
public void addStop() {
actions.add(new Integer(5));
}
public RobotBuildable getRobot() {
robot.loadActions(actions);
return robot;
}
}
class CookerBuildable implements RobotBuildable {
ArrayList actions;
public CookerBuildable() {
}
public final void go() {
Iterator itr = actions.iterator();
while (itr.hasNext()) {
switch ((Integer) itr.next()) {
case 1:
start();
break;
case 2:
getParts();
break;
case 3:
assemble();
break;
case 4:
test();
break;
case 5:
stop();
break;
}
}
}
public void start() {
System.out.println("Starting....");
}
public void getParts() {
System.out.println("Getting flour and sugar....");
}
public void assemble() {
System.out.println("Baking a cookie....");
}
public void test() {
System.out.println("Crunching a cookie....");
}
public void stop() {
System.out.println("Stopping....");
}
public void loadActions(ArrayList a) {
actions = a;
}
}
class CarBuildable implements RobotBuildable {
ArrayList actions;
public CarBuildable() {
}
public final void go() {
Iterator itr = actions.iterator();
while (itr.hasNext()) {
switch ((Integer) itr.next()) {
case 1:
start();
break;
case 2:
getParts();
break;
case 3:
assemble();
break;
case 4:
test();
break;
case 5:
stop();
break;
}
}
}
public void start() {
System.out.println("Starting....");
}
public void getParts() {
System.out.println("Getting a carburetor....");
}
public void assemble() {
System.out.println("Installing the carburetor....");
}
public void test() {
System.out.println("Revving the engine....");
}
public void stop() {
System.out.println("Stopping....");
}
public void loadActions(ArrayList a) {
actions = a;
}
}