基类应封装登录校验、数据权限过滤、操作日志、分页解析、结果包装等共性功能,定义baseadmincontroller提供通用能力;成员用protected修饰供子类复用;预留模板方法如dobusiness()供定制;通过泛型basecrudcontroller提升crud复用精度。

明确基类要封装哪些共性功能
后台管理模块普遍需要统一处理登录校验、数据权限过滤、操作日志记录、分页参数解析、返回结果包装等逻辑。这些不随具体业务变化的部分,适合抽到一个顶层基类中。比如定义 BaseAdminController,它不对应任何具体实体,只提供通用能力支撑。
用 protected 修饰可被子类复用的成员
基类中需要让子类直接访问的字段或方法,必须用 protected 修饰,不能是 private。例如:
- 定义 protected HttpServletRequest request; 方便子类获取当前请求上下文
- 提供 protected PageResult
success(List 方法,统一构造成功响应体data) - 声明 protected void logOperation(String action, Object detail),由子类在关键操作后调用
预留模板方法供子类定制行为
把流程骨架写在基类里,把变化点设计成抽象方法或空实现方法,让子类按需覆盖。例如:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 基类定义 public final void handleRequest() { checkAuth(); before(); doBusiness(); after(); }
- 其中 doBusiness() 声明为 protected abstract void doBusiness();
- 而 before() 和 after() 可设为 protected void 空方法,子类选择性重写
配合泛型提升复用精度
如果基类要操作具体的数据模型,可以用泛型约束类型。例如:
public abstract class BaseCrudController
protected abstract Service
public T getById(ID id) { return getService().getById(id); }
}
这样,用户管理控制器、订单管理控制器等,只需继承 BaseCrudController
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










