Visitor.java
上传用户:hensond
上传日期:2021-12-27
资源大小:817k
文件大小:2k
源码类别:

软件工程

开发平台:

Java

  1. package com.company.section4;
  2. /**
  3.  * @author cbf4Life cbf4life@126.com
  4.  * I'm glad to share my knowledge with you all.
  5.  */
  6. public class Visitor implements IVisitor {
  7. //部门经理的工资系数是5
  8. private final static int MANAGER_COEFFICIENT = 5;
  9. //员工的工资系数是2
  10. private final static int COMMONEMPLOYEE_COEFFICIENT = 2;
  11. //普通员工的工资总和
  12. private int commonTotalSalary = 0;
  13. //部门经理的工资总和
  14. private int managerTotalSalary =0;
  15. //访问普通员工,打印出报表
  16. public void visit(CommonEmployee commonEmployee) {
  17. System.out.println(this.getCommonEmployee(commonEmployee));
  18. //计算普通员工的薪水总和
  19. this.calCommonSlary(commonEmployee.getSalary());
  20. }
  21. //访问部门经理,打印出报表
  22. public void visit(Manager manager) {
  23. System.out.println(this.getManagerInfo(manager));
  24. //计算部门经理的工资总和
  25. this.calManagerSalary(manager.getSalary());
  26. }
  27. //组装出基本信息
  28. private String getBasicInfo(Employee employee){
  29. String info = "姓名:" + employee.getName() + "t";
  30. info = info + "性别:" + (employee.getSex() == Employee.FEMALE?"女":"男") + "t";
  31. info = info + "薪水:" + employee.getSalary()  + "t";
  32. return info;
  33. }
  34. //组装出部门经理的信息
  35. private String getManagerInfo(Manager manager){
  36. String basicInfo = this.getBasicInfo(manager);
  37. String otherInfo = "业绩:"+manager.getPerformance() + "t";
  38. return basicInfo + otherInfo;
  39. }
  40. //组装出普通员工信息
  41. private String getCommonEmployee(CommonEmployee commonEmployee){
  42. String basicInfo = this.getBasicInfo(commonEmployee);
  43. String otherInfo = "工作:"+commonEmployee.getJob()+"t";
  44. return basicInfo + otherInfo;
  45. }
  46. //计算部门经理的工资总和
  47. private void calManagerSalary(int salary){
  48. this.managerTotalSalary = this.managerTotalSalary + salary *MANAGER_COEFFICIENT ;
  49. }
  50. //计算普通员工的工资总和
  51. private void calCommonSlary(int salary){
  52. this.commonTotalSalary = this.commonTotalSalary + salary*COMMONEMPLOYEE_COEFFICIENT;
  53. }
  54. //获得所有员工的工资总和
  55. public int getTotalSalary(){
  56. return this.commonTotalSalary + this.managerTotalSalary;
  57. }
  58. }