Design patterns. Builder. Robot Builder
From AsIsWiki
(Difference between revisions)
Line 7: | Line 7: | ||
[https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%BE%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%28%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29 Источник] | [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%BE%D0%B8%D1%82%D0%B5%D0%BB%D1%8C_%28%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29 Источник] | ||
− | < | + | <syntaxhighlight> |
public class Main { | public class Main { | ||
Line 118: | Line 118: | ||
} | } | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
Revision as of 20:44, 26 February 2016
Robot Builder
<syntaxhighlight> public class Main {
public static void main(String[] args) {
Designer designer = new Designer(); RobotBuilder combatRobotBuilder = new CombatRobotBuilder(); designer.setRobotBuilder(combatRobotBuilder); designer.constructRobot();
Robot robot = designer.getRobot(); System.out.println(robot.toString()); }
}
class Robot {
private String battery = ""; private String movement = ""; private String mission = "";
public void setBattery(String battery) { this.battery = battery; }
public void setMovement(String movement) { this.movement = movement; }
public void setMission(String mission) { this.mission = mission; }
@Override public String toString() { return "Robot{" + "battery='" + battery + '\ + ", movement='" + movement + '\ + ", mission='" + mission + '\ + '}'; }
}
abstract class RobotBuilder {
protected Robot robot;
public Robot getRobot() { return robot; }
public void createNewRobot() { robot = new Robot(); }
public abstract void buildBattery();
public abstract void buildMovement();
public abstract void buildMission();
}
class CombatRobotBuilder extends RobotBuilder {
public void buildBattery() { robot.setBattery("nuclear"); }
public void buildMovement() { robot.setMovement("flying"); }
public void buildMission() { robot.setMission("scout"); }
}
class HomeRobotBuilder extends RobotBuilder {
public void buildBattery() { robot.setBattery("solar"); }
public void buildMovement() { robot.setMovement("wheels"); }
public void buildMission() { robot.setMission("housemaid"); }
}
class Designer {
private RobotBuilder robotBuilder;
public void setRobotBuilder(RobotBuilder rb) { robotBuilder = rb; }
public Robot getRobot() { return robotBuilder.getRobot(); }
public void constructRobot() { robotBuilder.createNewRobot(); robotBuilder.buildBattery(); robotBuilder.buildMovement(); robotBuilder.buildMission(); }
} </syntaxhighlight>