Re: Constructor Conundrum



interface Problem
{
void visit(ProblemVisitor visitor);
}

interface Solution
{
void solve(Problem problem);
}

final class WantToExitProblem implements Problem
{
void visit(final ProblemVisitor visitor)
{
visitor.accept(this);
}
}

final class WantToExitSolution implements Solution
{
public void solve(final Problem problem)
{
final WantToExitChecker checker=new WantToExitChecker();
problem.visit(checker);

if (checker.hasWantToExit())
System.exit(0);
}
}

interface ProblemVisitor
{
void accept(WantToExitProblem problem);
}

final class WantToExitChecker implements Visitor
{
private boolean hasWantToExit;

public void accept(final WantToExitProblem problem)
{
hasWantToExit=true;
}

public boolean hasWantToExit()
{
return hasWantToExit;
}
}

.