Как мы можем реализовать составной и шаблон посетителя вместе в Java? - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь объединить оба шаблона в Java, но я не понимал, как сделать их оба вложенными?

1 Ответ

0 голосов
/ 05 мая 2019

Очень часто используется шаблон составного дизайна с посетителем.Ниже приведена диаграмма классов примера приложения с использованием шаблонов посетителя и составного проекта. Изображение диаграммы классов

Приложение содержит интерфейс Shape, реализованный двумя конкретными формами (Circle и Rectangle).Класс Composite позволяет вызывать метод accept для всех фигур, добавленных в этот класс, только путем вызова метода accept для составного объекта.

Примечание. Составной объект также вызывает метод посещения для самого себя.

Код составного класса:

public class Composite implements Shape {
Shape[] shapes;

public Composite() {
    shapes = new Shape[]{new Rectangle(), new Circle()};
}
@Override
public void accept(ShapeVisitor shapeVisitor) {
    for (int i = 0; i < shapes.length; i++) {
        shapes[i].accept(shapeVisitor);
    }
     shapeVisitor.visit(this);
}
}

Класс PrintShape (Реализация интерфейса ShapeVisitor)

public class PrintShape implements ShapeVisitor {
@Override
public void visit(Composite composite) {
    System.out.println("Printing composite ....");
}

@Override
public void visit(Rectangle rectangle) {
    System.out.println("Print rectangle ...");
}

@Override
public void visit(Circle circle) {
    System.out.println("Print Circle ....");

}
}

Основной тестовый класс:

public class VisitorMain {

public static void main(String[] args) {
    Composite composite = new Composite();
    composite.accept(new PrintShape());
}
}

Вывод: Печать прямоугольника ... Печать круга .... Печать составного ....

Надеюсь, это поможет.

Для получения дополнительной информации: вот ссылка Дизайн посетителярисунок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...