Dev Highlights

Доки по разработке

This project is maintained by teniryte

Паттерн Visitor

Принципы

Пример

interface Drawable {
  accept(visitor: ShapeVisitor): void;
}

interface ShapeVisitor {
  visitCircle(shape: Circle): void;
  visitSquare(shape: Square): void;
  visitTriangle(shape: Triangle): void;
}

class Drawer implements ShapeVisitor {
  visitCircle() {
    console.log('DRAW_CIRCLE');
  }
  visitSquare() {
    console.log('DRAW_SQUARE');
  }
  visitTriangle() {
    console.log('DRAW_TRIANGLE');
  }
  draw(shape: Drawable) {
    shape.accept(this);
  }
}

Практика