mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-05-17 00:59:11 +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:
+12
-12
@@ -72,7 +72,7 @@ public class Commander extends Unit {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void accept(UnitVisitor visitor) {
|
public void accept(UnitVisitor visitor) {
|
||||||
visitor.visitCommander(this);
|
visitor.visit(this);
|
||||||
super.accept(visitor);
|
super.accept(visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ public class Sergeant extends Unit {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void accept(UnitVisitor visitor) {
|
public void accept(UnitVisitor visitor) {
|
||||||
visitor.visitSergeant(this);
|
visitor.visit(this);
|
||||||
super.accept(visitor);
|
super.accept(visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ public class Soldier extends Unit {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void accept(UnitVisitor visitor) {
|
public void accept(UnitVisitor visitor) {
|
||||||
visitor.visitSoldier(this);
|
visitor.visit(this);
|
||||||
super.accept(visitor);
|
super.accept(visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,17 +126,17 @@ Here are then some concrete visitors.
|
|||||||
public class CommanderVisitor implements UnitVisitor {
|
public class CommanderVisitor implements UnitVisitor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitSoldier(Soldier soldier) {
|
public void visit(Soldier soldier) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitSergeant(Sergeant sergeant) {
|
public void visit(Sergeant sergeant) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitCommander(Commander commander) {
|
public void visit(Commander commander) {
|
||||||
LOGGER.info("Good to see you {}", commander);
|
LOGGER.info("Good to see you {}", commander);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -145,17 +145,17 @@ public class CommanderVisitor implements UnitVisitor {
|
|||||||
public class SergeantVisitor implements UnitVisitor {
|
public class SergeantVisitor implements UnitVisitor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitSoldier(Soldier soldier) {
|
public void visit(Soldier soldier) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitSergeant(Sergeant sergeant) {
|
public void visit(Sergeant sergeant) {
|
||||||
LOGGER.info("Hello {}", sergeant);
|
LOGGER.info("Hello {}", sergeant);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitCommander(Commander commander) {
|
public void visit(Commander commander) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -164,17 +164,17 @@ public class SergeantVisitor implements UnitVisitor {
|
|||||||
public class SoldierVisitor implements UnitVisitor {
|
public class SoldierVisitor implements UnitVisitor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitSoldier(Soldier soldier) {
|
public void visit(Soldier soldier) {
|
||||||
LOGGER.info("Greetings {}", soldier);
|
LOGGER.info("Greetings {}", soldier);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitSergeant(Sergeant sergeant) {
|
public void visit(Sergeant sergeant) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitCommander(Commander commander) {
|
public void visit(Commander commander) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,9 +33,13 @@ public class Commander extends Unit {
|
|||||||
super(children);
|
super(children);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accept a Visitor.
|
||||||
|
* @param visitor UnitVisitor to be accepted
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void accept(UnitVisitor visitor) {
|
public void accept(UnitVisitor visitor) {
|
||||||
visitor.visitCommander(this);
|
visitor.visit(this);
|
||||||
super.accept(visitor);
|
super.accept(visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,18 +32,30 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class CommanderVisitor implements UnitVisitor {
|
public class CommanderVisitor implements UnitVisitor {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Soldier Visitor method.
|
||||||
|
* @param soldier Soldier to be visited
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void visitSoldier(Soldier soldier) {
|
public void visit(Soldier soldier) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sergeant Visitor method.
|
||||||
|
* @param sergeant Sergeant to be visited
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void visitSergeant(Sergeant sergeant) {
|
public void visit(Sergeant sergeant) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Commander Visitor method.
|
||||||
|
* @param commander Commander to be visited
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void visitCommander(Commander commander) {
|
public void visit(Commander commander) {
|
||||||
LOGGER.info("Good to see you {}", commander);
|
LOGGER.info("Good to see you {}", commander);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,9 +33,13 @@ public class Sergeant extends Unit {
|
|||||||
super(children);
|
super(children);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accept a Visitor.
|
||||||
|
* @param visitor UnitVisitor to be accepted
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void accept(UnitVisitor visitor) {
|
public void accept(UnitVisitor visitor) {
|
||||||
visitor.visitSergeant(this);
|
visitor.visit(this);
|
||||||
super.accept(visitor);
|
super.accept(visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,18 +32,30 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class SergeantVisitor implements UnitVisitor {
|
public class SergeantVisitor implements UnitVisitor {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Soldier Visitor method.
|
||||||
|
* @param soldier Soldier to be visited
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void visitSoldier(Soldier soldier) {
|
public void visit(Soldier soldier) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sergeant Visitor method.
|
||||||
|
* @param sergeant Sergeant to be visited
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void visitSergeant(Sergeant sergeant) {
|
public void visit(Sergeant sergeant) {
|
||||||
LOGGER.info("Hello {}", sergeant);
|
LOGGER.info("Hello {}", sergeant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Commander Visitor method.
|
||||||
|
* @param commander Commander to be visited
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void visitCommander(Commander commander) {
|
public void visit(Commander commander) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,9 +33,13 @@ public class Soldier extends Unit {
|
|||||||
super(children);
|
super(children);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accept a Visitor.
|
||||||
|
* @param visitor UnitVisitor to be accepted
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void accept(UnitVisitor visitor) {
|
public void accept(UnitVisitor visitor) {
|
||||||
visitor.visitSoldier(this);
|
visitor.visit(this);
|
||||||
super.accept(visitor);
|
super.accept(visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,18 +32,30 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class SoldierVisitor implements UnitVisitor {
|
public class SoldierVisitor implements UnitVisitor {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Soldier Visitor method.
|
||||||
|
* @param soldier Soldier to be visited
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void visitSoldier(Soldier soldier) {
|
public void visit(Soldier soldier) {
|
||||||
LOGGER.info("Greetings {}", soldier);
|
LOGGER.info("Greetings {}", soldier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sergeant Visitor method.
|
||||||
|
* @param sergeant Sergeant to be visited
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void visitSergeant(Sergeant sergeant) {
|
public void visit(Sergeant sergeant) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Commander Visitor method.
|
||||||
|
* @param commander Commander to be visited
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void visitCommander(Commander commander) {
|
public void visit(Commander commander) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ package com.iluwatar.visitor;
|
|||||||
*/
|
*/
|
||||||
public interface UnitVisitor {
|
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
|
@Override
|
||||||
void verifyVisit(Commander unit, UnitVisitor mockedVisitor) {
|
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
|
@Override
|
||||||
void verifyVisit(Sergeant unit, UnitVisitor mockedVisitor) {
|
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
|
@Override
|
||||||
void verifyVisit(Soldier unit, UnitVisitor mockedVisitor) {
|
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
|
@Test
|
||||||
void testVisitCommander() {
|
void testVisitCommander() {
|
||||||
this.visitor.visitCommander(new Commander());
|
this.visitor.visit(new Commander());
|
||||||
if (this.commanderResponse.isPresent()) {
|
if (this.commanderResponse.isPresent()) {
|
||||||
assertEquals(this.commanderResponse.get(), appender.getLastMessage());
|
assertEquals(this.commanderResponse.get(), appender.getLastMessage());
|
||||||
assertEquals(1, appender.getLogSize());
|
assertEquals(1, appender.getLogSize());
|
||||||
@@ -107,7 +107,7 @@ public abstract class VisitorTest<V extends UnitVisitor> {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testVisitSergeant() {
|
void testVisitSergeant() {
|
||||||
this.visitor.visitSergeant(new Sergeant());
|
this.visitor.visit(new Sergeant());
|
||||||
if (this.sergeantResponse.isPresent()) {
|
if (this.sergeantResponse.isPresent()) {
|
||||||
assertEquals(this.sergeantResponse.get(), appender.getLastMessage());
|
assertEquals(this.sergeantResponse.get(), appender.getLastMessage());
|
||||||
assertEquals(1, appender.getLogSize());
|
assertEquals(1, appender.getLogSize());
|
||||||
@@ -116,7 +116,7 @@ public abstract class VisitorTest<V extends UnitVisitor> {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testVisitSoldier() {
|
void testVisitSoldier() {
|
||||||
this.visitor.visitSoldier(new Soldier());
|
this.visitor.visit(new Soldier());
|
||||||
if (this.soldierResponse.isPresent()) {
|
if (this.soldierResponse.isPresent()) {
|
||||||
assertEquals(this.soldierResponse.get(), appender.getLastMessage());
|
assertEquals(this.soldierResponse.get(), appender.getLastMessage());
|
||||||
assertEquals(1, appender.getLogSize());
|
assertEquals(1, appender.getLogSize());
|
||||||
|
|||||||
Reference in New Issue
Block a user