Untitled
unknown
plain_text
9 months ago
1.5 kB
11
Indexable
import { Pizza } from './Pizza'
export interface IPricingStrategy {
calculatePizza(pizza: Pizza): number
}
import { Pizza } from './Pizza'
import { IPricingStrategy } from './pricingStrategy'
export class StandardPricingStrategy implements IPricingStrategy {
calculatePizza(pizza: Pizza): number {
let finalPrice = pizza.basePrice
finalPrice += pizza.size
if (pizza.isGlutenFree) finalPrice += 450
return finalPrice
}
}
import { Pizza } from './Pizza'
import { IPricingStrategy } from './pricingStrategy'
export class PricingService {
constructor(public pricingStrategy: IPricingStrategy) {}
public getPrice(pizza: Pizza) {
return this.pricingStrategy.calculatePizza(pizza)
}
}
import { PizzaSize } from './PizzaSize'
import { PizzaType } from './PizzaType'
export class Pizza {
constructor(
public basePrice: number,
public pizzaType: PizzaType,
public isGlutenFree: boolean,
public size: PizzaSize
) {}
}
import { Pizza } from './Pizza'
import { PizzaSize } from './PizzaSize'
import { PizzaType } from './PizzaType'
import { PricingService } from './PricingService'
import { StandardPricingStrategy } from './standardPricingStrategy'
const smallPineapplePizza = new Pizza(
200,
PizzaType.Pineapple,
true,
PizzaSize.Small
)
const pricingService = new PricingService(new StandardPricingStrategy())
console.log(pricingService.getPrice(smallPineapplePizza))
Editor is loading...
Leave a Comment