2017-08-14 80 views
-2

我想打一个适配器接口(和实现)使用多个类似的外部库之间。的Java,转换两种不同一般的情况下

例如,有外部库的接口。这些库指导实施Converter并注册它以扩展功能。

库甲

public interface AConverter<S, D> { 
    D convert(S source); 
} 

库乙

public interface BConverter<S, D> { 
    D convert(S source); 
} 

两个接口都指定了相同的方法。

我想是用我自己的MyConverter接口。

public interface MyConverter<S, D> { 
    D convert(S source); 
} 

用户实现了这个类,我的图书馆实现将要么力霸的实施AConverter或LibB的实施BConverter。这可能吗?

编辑:

我不想工厂模式或扩展力霸接口和LibB接口。 MyConverter是核心库,LibA和LibB是外部可插入库。

什么我想就是

public ALibAdapter { 
    AConverter change(MyConverter convert) { 
     /** 
     * Anything I can do? 
     */ 
     return aConverter; 
    } 
} 

回答

0

你的接口可以扩展现有的接口:

public interface MyConverter<S, D> extends AConverter<S, D>, BConverter<S, D> { 
    ... 
} 

现在你可以用它来代替库接口中任一个。

如果所有方法都具有相同的名称(convert),它们可以被覆盖。否则,您必须确保使用Java 8默认方法实现从您自己的方法调用这些实现。

+0

谢谢,但我不想让和转换器接口LIB依赖。 –

相关问题