Linux中怎么用cat命令创建文件并写入数据
254
2022-09-23
设计模式之访问者模式
设计思想
下属给领导汇报工作的时候不同的领导关注点不同
代码流程
职工存在accept 方法 把自己传递进去接受某个领导审查。领导审查重载方法根据不同领导关注该他需要关注的属性。
代码
public class Client { public static void main(String[] args) { // 构建报表 BusinessReport report = new BusinessReport(); System.out.println("=========== CEO看报表 ==========="); report.showReport(new CEOVisitor()); System.out.println("=========== CTO看报表 ==========="); report.showReport(new CTOVisitor()); }}// 员工基类public abstract class Staff { public String name; public int kpi;// 员工KPI public Staff(String name) { this.name = name; kpi = new Random().nextInt(10); } // 核心方法,接受Visitor的访问 public abstract void accept(Visitor visitor);}// 工程师public class Engineer extends Staff { public Engineer(String name) { super(name); } @Override public 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); } @Override public void accept(Visitor visitor) { visitor.visit(this); } // 一年做的产品数量 public int getProducts() { return new Random().nextInt(10); }}// 管理基类public interface Visitor { // 访问工程师类型 void visit(Engineer engineer); // 访问经理类型 void visit(Manager manager);}public class CTOVisitor implements Visitor { @Override public void visit(Engineer engineer) { System.out.println("工程师: " + engineer.name + ", 代码行数: " + engineer.getCodeLines()); } @Override public void visit(Manager manager) { System.out.println("经理: " + manager.name + ", 产品数量: " + manager.getProducts()); }}// CEO访问者public class CEOVisitor implements Visitor { @Override public void visit(Engineer engineer) { System.out.println("工程师: " + engineer.name + ", KPI: " + engineer.kpi); } @Override public void visit(Manager manager) { System.out.println("经理: " + manager.name + ", KPI: " + manager.kpi + ", 新产品数量: " + manager.getProducts()); }}// 员工业务报表类public class BusinessReport { private List
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~