??Strategy Design Pattern??
Ankesh Mishra
SERVING NOTICE PERIOD Development Engineer - Backend Technologies | Java RESTful APIs, Spring Boot
?? Understanding the Strategy Design Pattern through Uber Fare Calculation ??
In software design, flexibility and scalability are key. The Strategy Design Pattern is a perfect example of how to achieve this. Let’s explore how Uber might use this pattern to calculate fares.
What is the Strategy Design Pattern?
It’s a behavioral design pattern that defines a family of algorithms, encapsulates each one, and makes them interchangeable. This allows the algorithm to vary independently from clients that use it.
Key Components:
Example: Uber Fare Calculation
Strategy Interface:
public interface FareStrategy {
double calculateFare(double distance, double time);
}
Concrete Strategies:
领英推荐
public class RegularFareStrategy implements FareStrategy {
public double calculateFare(double distance, double time) {
return (10 * distance) + (1 * time);
}
}
public class SurgePricingStrategy implements FareStrategy {
public double calculateFare(double distance, double time) {
return (20 * distance) + (2 * time);
}
}
public class FlatFareStrategy implements FareStrategy {
public double calculateFare(double distance, double time) {
return 50;
}
}
Context:
public class UberFareCalculator {
private FareStrategy fareStrategy;
public void setFareStrategy(FareStrategy fareStrategy) {
this.fareStrategy = fareStrategy;
}
public double calculateFare(double distance, double time) {
return fareStrategy.calculateFare(distance, time);
}
}
Client Code:
UberFareCalculator fareCalculator = new UberFareCalculator();
fareCalculator.setFareStrategy(new RegularFareStrategy());
System.out.println("Regular Fare: " + fareCalculator.calculateFare(10, 15));
fareCalculator.setFareStrategy(new SurgePricingStrategy());
System.out.println("Surge Fare: " + fareCalculator.calculateFare(10, 15));
fareCalculator.setFareStrategy(new FlatFareStrategy());
System.out.println("Flat Fare: " + fareCalculator.calculateFare(10, 15));
Benefits:
Understanding and implementing design patterns like the Strategy Pattern can significantly enhance the robustness and maintainability of your code. ??