
本文共 7298 字,大约阅读时间需要 24 分钟。
������������������Visitor���������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Element������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������Staff���������������������������������������������������������CEO���CTO���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
������������
���������������������������������������������������������������
- Visitor������/������������������������������������������������������������������������������������������������������������������Engineer���Manager������������������������������������������������������������������
- ConcreteVisitor���������������������Visitor������������������������������������������������������������������������������������������������������������������������������������������������
- Element������/���������������������������������������������accept���������������������������������������������������������������������������������������������������������������������������Element������������accept������������������������������������������
- ElementA���ElementB���������������������������������������������Element���������������������������������������������������������������������������������������������������������������������������������������������������������������������
- ObjectStructure���������/������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������������������������������Element���������Visitor������������������������������������������������������������������������������������������������������������
������������
���������������������������������������������������������������
- ���������������������������������������������������������������������������������
- ���������������Element������������������������������������������������������������������������������������������Visitor���������������������������������
- ������������Element���������������������������������������������������������������������������
������������������������������������������������������������������������������������������CEO������������������������������������������������KPI������������������������CTO������������������������������������������������������������������������������������������������������������������������������������Visitor���������������������������������������������������������Element������
������������
���������������������������������������������������������������������������������������������������������
���������������������������Staff������������������������������������������
public abstract class Staff { protected String name; protected int kpi; public Staff(String name) { this.name = name; this.kpi = new Random().nextInt(10);}// ���������������������Visitor���������public abstract void accept(Visitor visitor); }
������������������������������������������������Engineer���Manager���������������������Staff���������������������������������������
public class Engineer extends Staff { public Engineer(String name) { super(name); } @Overridepublic void accept(Visitor visitor) { visitor.visit(this);}// ���������������������������public int getCodeLines() { return new Random().nextInt(10 * 10000);} }
public class Manager extends Staff { public Manager(String name) { super(name); } @Overridepublic void accept(Visitor visitor) { visitor.visit(this);}// ���������������������������������public int getProducts() { return new Random().nextInt(10);} }
������������������������������������������������������������BusinessReport������������������������������������������Visitor���������������������
public class BusinessReport { private List mStaffs = new LinkedList<>(); public BusinessReport() { // ��������������������� mStaffs.add(new Manager("������-A")); mStaffs.add(new Engineer("���������-A")); mStaffs.add(new Engineer("���������-B")); mStaffs.add(new Engineer("���������-C")); mStaffs.add(new Manager("������-B")); mStaffs.add(new Engineer("���������-D"));}// ������������������public void showReport(Visitor visitor) { System.out.println("=== ������������ ==="); for (Staff staff : mStaffs) { staff.accept(visitor); }} }
������������������������������������������������������������������������������CEOVisitor���CTOVisitor������������������������������������������
public interface Visitor { void visit(Engineer engineer); void visit(Manager manager);}
public class CEOVisitor implements Visitor { @Override public void visit(Engineer engineer) { System.out.println("���������: " + engineer.getName() + ", KPI: " + engineer.getKpi()); } @Overridepublic void visit(Manager manager) { System.out.println("������: " + manager.getName() + ", KPI: " + manager.getKpi() + ", ���������������: " + manager.getProducts());} }
public class CTOVisitor implements Visitor { @Override public void visit(Engineer engineer) { System.out.println("���������: " + engineer.getName() + ", ������������: " + engineer.getCodeLines()); } @Override public void visit(Manager manager) { System.out.println("������: " + manager.getName() + ", ������������: " + manager.getProducts()); }}
������������������������������������������������������������
public class Client { public static void main(String[] args) { BusinessReport report = new BusinessReport(); System.out.println("=========== CEO������������ ==========="); report.showReport(new CEOVisitor()); System.out.println("\n=========== CTO������������ ==========="); report.showReport(new CTOVisitor()); }}
������
���������������������������������������������������������������������������������������Staff������������������������������������������������������������������������Element������Engineer���Manager���������������������������������������������������Visitor������������������������������Element���������������������������ConcreteVisitor������������������������������������������������������������
���������������������������������������������������������������������������������������������������������������������������������������������������Element������������������������������������������������Element���������������������Visitor������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
发表评论
最新留言
关于作者
