-
The
Visitor
:
public interface Visitor {
void visit(final Debit debit);
void visit(final Credit credit);
}
-
The
Concrete Visitor
:
public class VisitorImpl implements Visitor {
public void visit(final Debit debit) {
System.out.println("Visit Debit ...");
}
public void visit(final Credit credit) {
System.out.println("Visit Credit ...");
}
}
-
The
Element
:
public interface Payment {
void accept(final Visitor visitor);
}
-
The
Concrete Element
:
-
Implementation 1:
public class Debit implements Payment {
public void accept(final Visitor visitor) {
visitor.visit(this);
}
}
-
Implementation 2:
public class Credit implements Payment {
public void accept(final Visitor visitor) {
visitor.visit(this);
}
}
-
A simple class to test the
Visitor
design pattern:
public class VisitorPatternTest {
public static void main(String[] args) {
final Payment debit = new Debit();
final Payment credit = new Credit();
final Visitor visitor1 = new VisitorImpl();
debit.accept(visitor1);
credit.accept(visitor1);
}
}