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 Источник] | ||
− | <pre> | + | <pre lang="java"> |
public class Main { | public class Main { | ||
Revision as of 20:40, 26 February 2016
Robot Builder
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();
}
}