Design patterns. Builder. Robot Builder

From AsIsWiki
(Difference between revisions)
Jump to: navigation, search
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

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