Solved the classcast exception and used instanceof instead. Improved javadocs a bit.

This commit is contained in:
Narendra Pathai 2018-09-11 15:58:14 +05:30
parent 9e56e5cbc1
commit f3749a2b9d
4 changed files with 14 additions and 12 deletions

View File

@ -23,8 +23,9 @@
package com.iluwatar.acyclicvisitor; package com.iluwatar.acyclicvisitor;
/** /**
* All ModemVisitor interface extends all visitor interfaces * All ModemVisitor interface extends all visitor interfaces. This interface
* provides ease of use when a visitor needs to visit all modem types.
*/ */
public interface AllModemVisitor extends ModemVisitor, ZoomVisitor, HayesVisitor{ public interface AllModemVisitor extends ZoomVisitor, HayesVisitor{
} }

View File

@ -27,9 +27,10 @@ import org.slf4j.LoggerFactory;
/** /**
* ConfigureForUnixVisitor class implements zoom's visit method for Unix * ConfigureForUnixVisitor class implements zoom's visit method for Unix
* manufacturer * manufacturer, unlike traditional visitor pattern, this class may selectively implement
* visit for other modems.
*/ */
public class ConfigureForUnixVisitor implements ModemVisitor, ZoomVisitor { public class ConfigureForUnixVisitor implements ZoomVisitor {
private static final Logger LOGGER = LoggerFactory.getLogger(ConfigureForUnixVisitor.class); private static final Logger LOGGER = LoggerFactory.getLogger(ConfigureForUnixVisitor.class);

View File

@ -37,10 +37,10 @@ public class Hayes extends Modem {
*/ */
@Override @Override
public void accept(ModemVisitor modemVisitor) { public void accept(ModemVisitor modemVisitor) {
try { if (modemVisitor instanceof HayesVisitor) {
((HayesVisitor) modemVisitor).visit(this); ((HayesVisitor) modemVisitor).visit(this);
} catch (ClassCastException e) { } else {
LOGGER.error("Unable to cast to HayesVisitor"); LOGGER.info("Only HayesVisitor is allowed to visit Hayes modem");
} }
} }

View File

@ -37,10 +37,10 @@ public class Zoom extends Modem {
*/ */
@Override @Override
public void accept(ModemVisitor modemVisitor) { public void accept(ModemVisitor modemVisitor) {
try { if (modemVisitor instanceof ZoomVisitor) {
((ZoomVisitor) modemVisitor).visit(this); ((ZoomVisitor) modemVisitor).visit(this);
} catch (ClassCastException e) { } else {
LOGGER.error("Unable to cast to ZoomVisitor"); LOGGER.info("Only ZoomVisitor is allowed to visit Zoom modem");
} }
} }