我想创建一个适配器接口(和实现)来使用多个类似的外部库。
例如,有外部库的接口。这些库指导实现Converter
并注册它以扩展功能。
Lib A
public interface AConverter<S, D> {
D convert(S source);
}
Lib B
public interface BConverter<S, D> {
D convert(S source);
}
两个接口都指定相同的方法。
我想要的是使用我自己的MyConverter
界面。
public interface MyConverter<S, D> {
D convert(S source);
}
用户实现此类,我的库将实现转换为LibA的AConverter
实现或LibB的BConverter
实现。这可能吗?
编辑:
我不想要工厂模式或扩展LibA接口和LibB接口。 MyConverter是核心库,LibA和LibB是外部可插拔库。
我正在尝试的是,
public ALibAdapter {
AConverter change(MyConverter convert) {
/**
* Anything I can do?
*/
return aConverter;
}
}
答案 0 :(得分:0)
您的界面可以扩展现有界面:
public interface MyConverter<S, D> extends AConverter<S, D>, BConverter<S, D> {
...
}
您现在可以使用它代替其中一个库接口。
如果所有方法都具有相同的名称(convert
),则可以覆盖它们。否则,您必须确保使用Java 8默认方法实现从您自己的方法调用这些实现。