PublicTransportRouteStrategy.java
package com.designpatterns.behavioral.strategy.classic;
public class PublicTransportRouteStrategy extends AbstractRouteStrategy {
private static final double DETOUR_FACTOR = 1.5;
private static final double AVERAGE_SPEED_KMH = 25.0;
private static final int FIXED_WAIT_MINUTES = 10;
@Override
public Route buildRoute(Location origin, Location destination) {
double distanceKm = straightLineDistanceKm(origin, destination) * DETOUR_FACTOR;
int minutes = (int) Math.round(distanceKm / AVERAGE_SPEED_KMH * 60) + FIXED_WAIT_MINUTES;
return new Route(distanceKm, minutes, "public transport");
}
}