Java Reference
In-Depth Information
Visitor (Chapter 29)
SOLUTION 29.1
The difference is in the type of the this object. The accept() method calls the visit()
method of a MachineVisitor object. The accept() method in the Machine class will
look up a visit() method with the signature visit(Machine) , whereas the accept()
method in the MachineComposite class will look up a method with the signature
visit(MachineComposite) .
SOLUTION 29.2
One solution is:
package com.oozinoz.applications;
import com.oozinoz.machine.*;
import com.oozinoz.dublin.*;
public class ShowFind
{
public static void main(String[] args)
{
MachineComponent f = OozinozFactory.dublin();
System.out.println(new FindVisitor().find(f, 3404));
}
}
This program successfully prints out:
StarPress3404
SOLUTION 29.3
A solution is:
package com.oozinoz.dublin;
import com.oozinoz.machine.*;
import java.util.*;
public class RakeVisitor extends MachineVisitor
{
private Set leaves;
public Set getLeaves(MachineComponent mc)
{
leaves = new HashSet();
mc.accept(this);
return leaves;
}
public void visit(Machine m)
{
leaves.add(m);
}
Search WWH ::




Custom Search