Design patterns. Builder. Robot Builder

From AsIsWiki
Revision as of 20:44, 26 February 2016 by Alex (Talk | contribs)

Jump to: navigation, search

Builder


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>



Builder

Personal tools
Namespaces

Variants
Actions
Navigation
Tools