implement singleton design pattern
authorCindy Zhang <cindyzyx9@gmail.com>
Fri, 30 Dec 2016 17:32:28 +0000 (09:32 -0800)
committerCindy Zhang <cindyzyx9@gmail.com>
Fri, 30 Dec 2016 17:32:28 +0000 (09:32 -0800)
src/org/usfirst/frc/team3501/robot/OI.java
src/org/usfirst/frc/team3501/robot/Robot.java
src/org/usfirst/frc/team3501/robot/subsystems/DriveTrain.java

index 997be71cdbe551afe2477d093f6172a28c1cfe26..211c3992323cac295dc95ad8f22faa573dc0e3f1 100644 (file)
@@ -3,6 +3,7 @@ package org.usfirst.frc.team3501.robot;
 import edu.wpi.first.wpilibj.Joystick;
 
 public class OI {
+  private static OI oi;
   public static Joystick leftJoystick;
   public static Joystick rightJoystick;
 
@@ -11,4 +12,10 @@ public class OI {
     rightJoystick = new Joystick(Constants.OI.RIGHT_STICK_PORT);
 
   }
+  
+  public static OI getOI(){
+         if(oi == null)
+                 oi = new OI();
+         return oi;
+  }
 }
index 36ca70bc268a526c02d33f5531c1d8d550fcbe90..3ccbadf02f84736b63344a3fc8340a793b2d5088 100644 (file)
@@ -1,17 +1,23 @@
 package org.usfirst.frc.team3501.robot;
 
-import org.usfirst.frc.team3501.robot.Constants.DriveTrain;
+import org.usfirst.frc.team3501.robot.subsystems.DriveTrain;
 import edu.wpi.first.wpilibj.IterativeRobot;
 import edu.wpi.first.wpilibj.command.Scheduler;
 
 public class Robot extends IterativeRobot {
-  public static OI oi;
-  public static DriveTrain driveTrain;
 
   @Override
   public void robotInit() {
-    driveTrain = new DriveTrain();
-    oi = new OI();
+    DriveTrain.getDriveTrain();
+    OI.getOI();
+  }
+  
+  public static DriveTrain getDriveTrain(){
+         return DriveTrain.getDriveTrain();
+  }
+  
+  public static OI getOI(){
+         return OI.getOI();
   }
 
   @Override
index 54b0ce01131b2dd8a376e98447b30703c5bc7317..6175630367e65f38b670a939f2645ae45e8fe7cd 100644 (file)
@@ -5,14 +5,21 @@ import edu.wpi.first.wpilibj.CANTalon;
 import edu.wpi.first.wpilibj.command.Subsystem;
 
 public class DriveTrain extends Subsystem {
+  private static DriveTrain driveTrain;
   private CANTalon frontLeft, frontRight, rearLeft, rearRight;
 
-  public DriveTrain() {
+  private DriveTrain() {
     frontLeft = new CANTalon(Constants.DriveTrain.FRONT_LEFT);
     frontRight = new CANTalon(Constants.DriveTrain.FRONT_RIGHT);
     rearLeft = new CANTalon(Constants.DriveTrain.REAR_LEFT);
     rearRight = new CANTalon(Constants.DriveTrain.REAR_RIGHT);
   }
+  
+  public static DriveTrain getDriveTrain(){
+         if(driveTrain == null)
+                 driveTrain = new DriveTrain();
+         return driveTrain;
+  }
 
   @Override
   protected void initDefaultCommand() {