Untitled
unknown
plain_text
5 months ago
1.5 kB
10
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