我目前正在使用第三方库来管理硬件的项目中。
我希望创建一个呈现相同接口的替代库,但不是控制实际硬件,而是呈现一个不错的伪造GUI。优选地,这可以仅通过更换广口瓶来完成。
问题在于所有第三方代码都在名称空间edu.edu.wpi.first.wpilibj
中,当然,我的库的名称空间将大不相同。
有什么方法可以在两个提供相同Java接口的库之间轻松切换实现吗?
最佳答案
是的,有设计模式可以做到这一点。
您可以查看策略模式。
更好的是您可以查看Dependency injection。
您可以使用Google Guice作为容器,并根据您的配置,在运行时,您的实现可以在使用N个库之间进行切换。
归根结底,您需要将这些库包装成某种抽象。
这是一个例子:
interface ISomeOperation{
void process();
}
class ThatUsesTheWPILIBJ implements ISomeOperation{
void process(){
//use library here
}
}
class ThatUsesYourMock implements ISomeOperation{
void process(){
//use your mock here
}
}
public YourUIClass{
private ISomeOperation _operatingClass;
public YourUIClass(ISomeOperation operatingClass){
_operatingClass = operatingClass;
}
public void render(){
_operatingClass.process();
}
}
现在,您需要做的就是接线。查看google guice配置。