Skip to content

Latest commit

 

History

History
23 lines (19 loc) · 552 Bytes

strategy.md

File metadata and controls

23 lines (19 loc) · 552 Bytes

Strategy Pattern based on the value.

// Use lowercase or capitals, don't use mixed cases. This makes it easier to build the key.
const Plan = Object.freeze({
  PAID: 'PAID',
  DEFAULT: 'DEFAULT',
  DISCOUNTED: 'DISCOUNTED'
})

const Plans = {
  [Plan.DEFAULT]: () => console.log('default plan'),
  [Plan.PAID]: () => console.log('paid plan'),
  [Plan.DISCOUNTED]: () => console.log('discounted')
}

const PlanStrategy = (plan) => {
  return Plans[plan] || Plans.DEFAULT
}

const strategy = PlanStrategy(Plan.PAID)
strategy() // paid plan