Design Pattern - Visitor

by de Montalembert Jonathan

JavaScript

class Hero {
  constructor(name) {
    this.name = name
  }
  getName() {
    return this.name
  }
  accept(visitor) {
    visitor.visit(this)
  }
}

class CoolVisitor {
  visit(obj) {
    obj.getCoolName = () => "JOOOOON"
    obj.getSomeRandomNumber = () => Math.round(Math.random() * 100)
  }
}

const jon = new Hero("Jon")
console.log(jon.getName())
jon.accept(new CoolVisitor())

console.log(jon.getCoolName(), jon.getSomeRandomNumber())