Доки по разработке
This project is maintained by teniryte
Принципы
accept, принимающий посетителя и вызывающий соответствующий метод.ShapeVisitor) инкапсулирует операции, которые зависят от конкретного типа, без изменения самих фигур.Пример
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);
}
}
Практика
accept так, чтобы он вызывал корректный метод посетителя.