Java中不存在官方AbstractSkeleton类,它是桥接接口与抽象类的骨架实现模式:实现接口、提供默认逻辑、声明抽象方法供子类定制,并支持模板方法与多接口组合。

Java中并不存在官方定义的 AbstractSkeleton 类,它不是 JDK 提供的标准类,而是一种常见的设计模式实践——即“骨架实现类”(Skeleton Implementation),用于**桥接接口与抽象类**,把接口的契约通过抽象类做初步实现,便于子类复用和扩展。
什么是骨架实现类?
骨架实现类是抽象类,它:
- 实现某个接口(或多个接口)
- 提供部分方法的默认实现(尤其是模板方法、通用逻辑、空实现或抛 UnsupportedOperationException)
- 将真正需要子类定制的方法声明为
abstract - 不强制要求所有方法都实现,保留扩展灵活性
如何编写一个典型的骨架实现类?
以自定义事件监听器为例:先定义接口,再写骨架抽象类,最后由具体子类继承。
1. 定义接口
立即学习“Java免费学习笔记(深入)”;
public interface DataProcessor {
void onStart();
void onProcess(String data);
void onEnd();
}2. 编写骨架实现类(即你所说的 AbstractSkeleton)
public abstract class AbstractDataProcessor implements DataProcessor {
// 提供空实现,避免子类必须重写
@Override
public void onStart() { /* 默认无操作 */ }
<pre class="brush:php;toolbar:false;">// 声明为 abstract,强制子类实现核心逻辑
@Override
public abstract void onProcess(String data);
// 提供默认结束行为(比如日志)
@Override
public void onEnd() {
System.out.println("Processing finished.");
}}
3. 具体子类只需关注核心逻辑
public class CsvProcessor extends AbstractDataProcessor {
@Override
public void onProcess(String data) {
System.out.println("Parsing CSV: " + data);
}
}进阶技巧:支持多个接口 + 模板方法
骨架类可组合多个接口,并引入模板方法控制流程:
public abstract class AbstractDataProcessor
implements DataProcessor, AutoCloseable {
<pre class="brush:php;toolbar:false;">// 模板方法:定义执行流程
public final void execute(String... inputs) {
onStart();
for (String input : inputs) {
onProcess(input);
}
onEnd();
}
// 接口方法实现(同上)
@Override public void onStart() {}
@Override public abstract void onProcess(String data);
@Override public void onEnd() { System.out.println("Done."); }
// AutoCloseable 的默认实现
@Override public void close() { System.out.println("Closed."); }}
命名与规范建议
这类类通常命名为:
-
AbstractXxx(最常见,如AbstractList) -
XxxSkeleton(较少见,多用于 RMI 或旧式框架) - 避免直接叫
AbstractSkeleton—— 它太泛,无法表达领域语义
关键不是名字,而是职责清晰:它应明确服务于哪个接口,封装哪些共性,留下哪些钩子供子类定制。


















