, , Transformer Robot, Car Car, .
, .
:.
class Transformer {
private Car car;
private Robot robot;
private Class currentState = Car.class;
public void fight() {
if (currentState.equals(Robot.class)
robot.fight();
}
public void drive() {
if (currentState.equals(Car.class)
car.drive();
}
public void transform() {
if (currentState.equals(Car.class)
currentState = Robot.class;
else
currentState = Car.class;
}
Transformer, Car-Form Robot-Form, :
new Transformer(new OptimusPrimeRobot(), new GiantTruck());
:
Transformer(Robot r, Car c) {
this.robot = r;
this.car = c;
}
OptimusPrimeRobot, Robot GiantTruck, Car.
, . :
Class carClass;
Class robotClass;
:
Transformer(Class robotC, Class carC) {
this.robotClass = robotC;
this.carClass = carC;
}
getter :
private Robot getRobot() {
if(robot == null) {
robot = robotClass.newInstance();
}
return robot;
}
, Getters :
getRobot().fight();
, , .