我正在寻找一种使库可替换的方法。
例如:我有一个通过多播管理通信的库。我正在主应用程序中使用该库。我的想法是为此使用接口:
public interface MessageHandler {
public void sendMessage();
public Message receiveMessage();
}
现在应该可以更改库了。例如,正在管理广播通信的图书馆。两者都实现相同的接口。
因此,在我的主应用程序中,我希望有机会:
MessageHandler mHandler = new MulticastImpl();
要么
MessageHandler mHandler = new BroadcastImpl();
我的问题是:接口定义放在哪里?当我将其放入主应用程序时,我无法从库中看到它(因为库不知道主应用程序)。
当我将其放入两个库中时,我有两个不同的MessageHandler接口(例如com.multicast.MessageHandler和com.broadcast.MessageHandler)
有任何想法吗?
最佳答案
这是一个基本的插件系统。您应该做的是:
请注意,有更复杂的方式可以在Java中加载插件(例如,使用java.util.ServiceLoader和/或嵌套的类加载器),但这是一个好的开始。