java接口规范要求只声明“做什么”、不涉及“怎么做”,命名用形容词+名词如logincapable,方法名用动词+名词如sendverificationcode,遵循isp原则拆分接口,慎用常量和default方法。

Java 接口定义规范的核心,是只声明“做什么”,不涉及“怎么做”。它本质上是一份契约,约束实现类必须提供哪些能力,但完全不干预内部逻辑。
接口命名要体现业务意图
名称应直白表达角色或能力,避免泛化词如 UserInterface 或 BaseService。推荐用形容词+名词结构,例如:
- LoginCapable(具备登录能力)
- ReportExportable(可导出报表)
- PaymentProcessable(可处理支付)
这类名称让调用方一眼看懂该接口的用途,也便于按职责拆分。
方法设计聚焦单一行为契约
每个方法名应是动词+名词结构,语义明确、无歧义:
- ✅ sendVerificationCode(String phone)
- ✅ verifyToken(String token)
- ❌ doAuth()(含义模糊)
- ❌ handleUserAction()(职责不清)
所有方法默认为 public abstract,不写方法体,结尾用分号;不定义静态字段或非抽象成员,除非有明确用途的 default 或 static 方法(Java 8+)。
严格遵循接口分离原则(ISP)
一个接口只服务一类调用方,避免“大而全”:
- 如果某个实现类不得不对 1/3 以上的方法抛 UnsupportedOperationException 或留空实现,说明接口已臃肿
- 拆分依据不是“功能模块”,而是“谁在用”:Web 控制层需要登录,通知服务只需发邮件,定时任务只调同步——就该拆成三个独立接口
- 允许一个类 implements 多个精简接口,比继承一个巨无霸接口更灵活、低耦合
常量与默认方法需谨慎使用
接口中可定义常量,但仅限真正全局不变的业务标识,如 MAX_RETRY_TIMES = 3;
默认方法(default)只用于向后兼容或提供通用基础逻辑(如日志包装、参数校验模板),不能替代核心业务实现;
避免在接口里塞工具方法、初始化逻辑或资源管理代码——这些属于实现细节,应交给具体类或工具类。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











