mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-05-14 10:58:42 +00:00
improvement: fix issue 1968 and correct visitor pattern code and test. (#2023)
* fix issue 1968 and correct visitor pattern code and test. * fix README code as well.
This commit is contained in:
@@ -33,9 +33,13 @@ public class Commander extends Unit {
|
||||
super(children);
|
||||
}
|
||||
|
||||
/**
|
||||
* Accept a Visitor.
|
||||
* @param visitor UnitVisitor to be accepted
|
||||
*/
|
||||
@Override
|
||||
public void accept(UnitVisitor visitor) {
|
||||
visitor.visitCommander(this);
|
||||
visitor.visit(this);
|
||||
super.accept(visitor);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,18 +32,30 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@Slf4j
|
||||
public class CommanderVisitor implements UnitVisitor {
|
||||
|
||||
/**
|
||||
* Soldier Visitor method.
|
||||
* @param soldier Soldier to be visited
|
||||
*/
|
||||
@Override
|
||||
public void visitSoldier(Soldier soldier) {
|
||||
public void visit(Soldier soldier) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
/**
|
||||
* Sergeant Visitor method.
|
||||
* @param sergeant Sergeant to be visited
|
||||
*/
|
||||
@Override
|
||||
public void visitSergeant(Sergeant sergeant) {
|
||||
public void visit(Sergeant sergeant) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
/**
|
||||
* Commander Visitor method.
|
||||
* @param commander Commander to be visited
|
||||
*/
|
||||
@Override
|
||||
public void visitCommander(Commander commander) {
|
||||
public void visit(Commander commander) {
|
||||
LOGGER.info("Good to see you {}", commander);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,9 +33,13 @@ public class Sergeant extends Unit {
|
||||
super(children);
|
||||
}
|
||||
|
||||
/**
|
||||
* Accept a Visitor.
|
||||
* @param visitor UnitVisitor to be accepted
|
||||
*/
|
||||
@Override
|
||||
public void accept(UnitVisitor visitor) {
|
||||
visitor.visitSergeant(this);
|
||||
visitor.visit(this);
|
||||
super.accept(visitor);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,18 +32,30 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@Slf4j
|
||||
public class SergeantVisitor implements UnitVisitor {
|
||||
|
||||
/**
|
||||
* Soldier Visitor method.
|
||||
* @param soldier Soldier to be visited
|
||||
*/
|
||||
@Override
|
||||
public void visitSoldier(Soldier soldier) {
|
||||
public void visit(Soldier soldier) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
/**
|
||||
* Sergeant Visitor method.
|
||||
* @param sergeant Sergeant to be visited
|
||||
*/
|
||||
@Override
|
||||
public void visitSergeant(Sergeant sergeant) {
|
||||
public void visit(Sergeant sergeant) {
|
||||
LOGGER.info("Hello {}", sergeant);
|
||||
}
|
||||
|
||||
/**
|
||||
* Commander Visitor method.
|
||||
* @param commander Commander to be visited
|
||||
*/
|
||||
@Override
|
||||
public void visitCommander(Commander commander) {
|
||||
public void visit(Commander commander) {
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,9 +33,13 @@ public class Soldier extends Unit {
|
||||
super(children);
|
||||
}
|
||||
|
||||
/**
|
||||
* Accept a Visitor.
|
||||
* @param visitor UnitVisitor to be accepted
|
||||
*/
|
||||
@Override
|
||||
public void accept(UnitVisitor visitor) {
|
||||
visitor.visitSoldier(this);
|
||||
visitor.visit(this);
|
||||
super.accept(visitor);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,18 +32,30 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@Slf4j
|
||||
public class SoldierVisitor implements UnitVisitor {
|
||||
|
||||
/**
|
||||
* Soldier Visitor method.
|
||||
* @param soldier Soldier to be visited
|
||||
*/
|
||||
@Override
|
||||
public void visitSoldier(Soldier soldier) {
|
||||
public void visit(Soldier soldier) {
|
||||
LOGGER.info("Greetings {}", soldier);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sergeant Visitor method.
|
||||
* @param sergeant Sergeant to be visited
|
||||
*/
|
||||
@Override
|
||||
public void visitSergeant(Sergeant sergeant) {
|
||||
public void visit(Sergeant sergeant) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
/**
|
||||
* Commander Visitor method.
|
||||
* @param commander Commander to be visited
|
||||
*/
|
||||
@Override
|
||||
public void visitCommander(Commander commander) {
|
||||
public void visit(Commander commander) {
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,10 +29,10 @@ package com.iluwatar.visitor;
|
||||
*/
|
||||
public interface UnitVisitor {
|
||||
|
||||
void visitSoldier(Soldier soldier);
|
||||
void visit(Soldier soldier);
|
||||
|
||||
void visitSergeant(Sergeant sergeant);
|
||||
void visit(Sergeant sergeant);
|
||||
|
||||
void visitCommander(Commander commander);
|
||||
void visit(Commander commander);
|
||||
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public class CommanderTest extends UnitTest<Commander> {
|
||||
|
||||
@Override
|
||||
void verifyVisit(Commander unit, UnitVisitor mockedVisitor) {
|
||||
verify(mockedVisitor).visitCommander(eq(unit));
|
||||
verify(mockedVisitor).visit(eq(unit));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -43,7 +43,7 @@ public class SergeantTest extends UnitTest<Sergeant> {
|
||||
|
||||
@Override
|
||||
void verifyVisit(Sergeant unit, UnitVisitor mockedVisitor) {
|
||||
verify(mockedVisitor).visitSergeant(eq(unit));
|
||||
verify(mockedVisitor).visit(eq(unit));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -43,7 +43,7 @@ public class SoldierTest extends UnitTest<Soldier> {
|
||||
|
||||
@Override
|
||||
void verifyVisit(Soldier unit, UnitVisitor mockedVisitor) {
|
||||
verify(mockedVisitor).visitSoldier(eq(unit));
|
||||
verify(mockedVisitor).visit(eq(unit));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -98,7 +98,7 @@ public abstract class VisitorTest<V extends UnitVisitor> {
|
||||
|
||||
@Test
|
||||
void testVisitCommander() {
|
||||
this.visitor.visitCommander(new Commander());
|
||||
this.visitor.visit(new Commander());
|
||||
if (this.commanderResponse.isPresent()) {
|
||||
assertEquals(this.commanderResponse.get(), appender.getLastMessage());
|
||||
assertEquals(1, appender.getLogSize());
|
||||
@@ -107,7 +107,7 @@ public abstract class VisitorTest<V extends UnitVisitor> {
|
||||
|
||||
@Test
|
||||
void testVisitSergeant() {
|
||||
this.visitor.visitSergeant(new Sergeant());
|
||||
this.visitor.visit(new Sergeant());
|
||||
if (this.sergeantResponse.isPresent()) {
|
||||
assertEquals(this.sergeantResponse.get(), appender.getLastMessage());
|
||||
assertEquals(1, appender.getLogSize());
|
||||
@@ -116,7 +116,7 @@ public abstract class VisitorTest<V extends UnitVisitor> {
|
||||
|
||||
@Test
|
||||
void testVisitSoldier() {
|
||||
this.visitor.visitSoldier(new Soldier());
|
||||
this.visitor.visit(new Soldier());
|
||||
if (this.soldierResponse.isPresent()) {
|
||||
assertEquals(this.soldierResponse.get(), appender.getLastMessage());
|
||||
assertEquals(1, appender.getLogSize());
|
||||
|
||||
Reference in New Issue
Block a user