Design patterns. Builder. Robot Builder

From AsIsWiki
(Difference between revisions)
Jump to: navigation, search
(Created page with "<div style='max-width:700px;text-align:justify;'> Оглавление ==Robot Builder== [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B...")
 
Line 1: Line 1:
 
<div style='max-width:700px;text-align:justify;'>
 
<div style='max-width:700px;text-align:justify;'>
[[Design patterns. Builder|Оглавление]]
+
[[Design patterns. Builder|Builder]]
  
  
Line 122: Line 122:
  
 
----
 
----
[[Design patterns. Builder|Оглавление]]
+
[[Design patterns. Builder|Builder]]
 
</div>
 
</div>

Revision as of 18:59, 26 February 2016

Builder


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();
    }
}



Builder

Personal tools
Namespaces

Variants
Actions
Navigation
Tools