public abstract class BaseApprover implements Approver { private String approverName; private ApprovalLevel level; private Logger logger; public BaseApprover(String approverName, ApprovalLevel level, Logger logger) { this.approverName = approverName; this.level = level; this.logger = logger; } @Override public ApprovalLevel getRequiredLevel() { return level; } @Override public String getApproverName() { return approverName; } protected Logger getLogger() { return logger; } protected abstract boolean canApprove(Order order); @Override public boolean approve(Order order, ApprovalContext context) { logger.info(getApproverName() + " 正在审批订单: " + order.getOrderId()); if (!canApprove(order)) { logger.warn(getApproverName() + " 拒绝审批订单: " + order.getOrderId()); context.addApprovalRecord(this, false, "不符合审批条件"); context.setCurrentStatus(ApprovalStatus.REJECTED); context.setRejectionReason("不符合" + getApproverName() + "的审批条件"); return false; } // 子类可以提供额外的审批逻辑 boolean approved = performApproval(order, context); if (approved) { logger.info(getApproverName() + " 已批准订单: " + order.getOrderId()); context.addApprovalRecord(this, true, "审批通过"); } else { logger.warn(getApproverName() + " 已拒绝订单: " + order.getOrderId()); context.addApprovalRecord(this, false, "审批拒绝"); context.setCurrentStatus(ApprovalStatus.REJECTED); context.setRejectionReason(getApproverName() + "拒绝了订单"); } return approved; } protected abstract boolean performApproval(Order order, ApprovalContext context); }