提交 f3749a2b 编写于 作者: N Narendra Pathai

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

上级 9e56e5cb
......@@ -23,8 +23,9 @@
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{
}
......@@ -27,9 +27,10 @@ import org.slf4j.LoggerFactory;
/**
* 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);
......
......@@ -37,10 +37,10 @@ public class Hayes extends Modem {
*/
@Override
public void accept(ModemVisitor modemVisitor) {
try {
((HayesVisitor) modemVisitor).visit(this);
} catch (ClassCastException e) {
LOGGER.error("Unable to cast to HayesVisitor");
if (modemVisitor instanceof HayesVisitor) {
((HayesVisitor) modemVisitor).visit(this);
} else {
LOGGER.info("Only HayesVisitor is allowed to visit Hayes modem");
}
}
......
......@@ -37,10 +37,10 @@ public class Zoom extends Modem {
*/
@Override
public void accept(ModemVisitor modemVisitor) {
try {
((ZoomVisitor) modemVisitor).visit(this);
} catch (ClassCastException e) {
LOGGER.error("Unable to cast to ZoomVisitor");
if (modemVisitor instanceof ZoomVisitor) {
((ZoomVisitor) modemVisitor).visit(this);
} else {
LOGGER.info("Only ZoomVisitor is allowed to visit Zoom modem");
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册