Strategy
About
Example
export default interface FareCalculator {
calculate(distance: number): number;
}
export class NormalFareCalculator implements FareCalculator {
calculate(distance: number): number {
return distance * 2;
}
}
export class OvernightFareCalculator implements FareCalculator {
calculate(distance: number): number {
return distance * 3;
}
}
export class SpecialDayFareCalculator implements FareCalculator {
calculate(distance: number): number {
return distance * 1;
}
}
export class FareCalculatorFactory {
static create(date: Date) {
if (date.getDate() === 1) return new SpecialDayFareCalculator();
if (date.getHours() > 22 || date.getHours() < 6) return new OvernightCalculator();
return new NormalFareCalculator();
}
}Last updated