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 lang="java">
+
<syntaxhighlight>
 
public class Main {
 
public class Main {
  
Line 118: Line 118:
 
     }
 
     }
 
}
 
}
</pre>
+
</syntaxhighlight>
  
  

Revision as of 20:44, 26 February 2016

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