Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class RadarSimulator {
- public static void main(String[] args) {
- Vehicle v = new Ferrari();
- v = new RadarDetecting(v);
- v.setSpeed(100);
- RadarTrap r = new RadarTrap();
- r.enter(v);
- r.checkForSpeeders();
- }
- }
- ------------------------------------------------
- import java.util.Iterator;
- public class RadarTrap {
- private int SPEED_LIMIT = 65;
- private List<Vehicle> vehicles = new SinglyLinkedList<Vehicle>();
- public void enter(Vehicle v) {
- vehicles.add(v);
- }
- public int measureSpeed(Vehicle v) {
- v.illuminated(this);
- return v.getSpeed();
- }
- public void checkForSpeeders() {
- Iterator<Vehicle> it = vehicles.iterator();
- while (it.hasNext()) {
- Vehicle v = it.next();
- if (measureSpeed(v) > SPEED_LIMIT) {
- v.getTicketed();
- }
- }
- }
- }
- ------------------------------------------------
- public abstract class Vehicle {
- RadarBehavior radarBehavior;
- int speed = 0;
- public int getSpeed() {
- return speed;
- }
- public void setSpeed(int speed) {
- this.speed = speed;
- }
- public void getTicketed() {
- System.out.println("Ticket");
- }
- public void illuminated(RadarTrap radarTrap) {
- System.out.println("Illuminated");
- }
- }
- ------------------------------------------------
- public class Ferrari extends Vehicle {
- public Ferrari() {
- radarBehavior = new DoNothing();
- }
- }
- ------------------------------------------------
- public class RadarDetecting extends Decorator {
- Vehicle vehicle;
- public RadarDetecting(Vehicle vehicle) {
- this.vehicle = vehicle;
- }
- public int getSpeed() {
- return speed;
- }
- public void illuminated(RadarTrap radarTrap) {
- System.out.println("Got illuminated, so slowed down..");
- this.setSpeed(60);
- }
- }
Add Comment
Please, Sign In to add comment