public interface Target{
public void access(Visitor visitor);
}
public interface Visitor{
public void visit(Computer target);
public void visit(CPU target);
public void visit(HardDisk target);
}
public class CPU implements Target{
@Override
public void access(Visitor visitor) {
visitor.visit(this);
}
private String info;
public CPU(String info) {
this.info = info;
}
public void setInfo(String info) {
this.info = info;
}
}
public class HardDisk implements Target{
@Override
public void access(Visitor visitor) {
visitor.visit(this);
}
private String info;
public HardDisk(String info) {
this.info = info;
}
public void setInfo(String info) {
this.info = info;
}
}
public class Computer implements Target{
@Override
public void access(Visitor visitor) {
visitor.visit(this);
for(Target target:targets) {
target.access(visitor);
}
}
java.util.ArrayList<Target> targets = new java.util.ArrayList<Target>();
public void addTarget(Target target) {
targets.add(target);
}
}
public class VisitComputer implements Visitor{
@Override
public void visit(CPU target) {
System.out.println(target.info+"随便搞");
}
@Override
public void visit(HardDisk target) {
System.out.println(target.info+"随便搞");
}
@Override
public void visit(Computer target) {
System.out.println("这里是头,遍历随便搞");
}
}
public static void main(String[] args) {
test.CPU cpu = new test().new CPU("CPU温度高396度");
test.HardDisk hardDisk = new test().new HardDisk("HardDisk温度高396度");
test.Computer computer = new test().new Computer();
test.VisitComputer visitComputer = new test().new VisitComputer();
computer.addTarget(cpu);
computer.addTarget(hardDisk);
computer.access(visitComputer);