Java 从不同的jar调用相同的方法
我有五个Jar文件。所有Jar文件都包含相同的类Play和相同的方法PlayGame(),但玩游戏的逻辑不同。 例如:Java 从不同的jar调用相同的方法,java,spring-mvc,Java,Spring Mvc,我有五个Jar文件。所有Jar文件都包含相同的类Play和相同的方法PlayGame(),但玩游戏的逻辑不同。 例如: Class Play{ public String PlayGame(){ //logic for playing Game //each jar contain different logic for playing game } } 我有一个主应用程序,它包含所有五个罐子。 我的主应用程序调用Pl
Class Play{
public String PlayGame(){
//logic for playing Game
//each jar contain different logic for playing game
}
}
我有一个主应用程序,它包含所有五个罐子。
我的主应用程序调用PlayGame()方法
我想要,
在football select上,应调用football jar的PlayGame()方法。
在hockey select上,应该调用hockey jar的PlayGame()方法。
等等
我玩游戏的所有不同实现都在不同的罐子里。因为我的应用程序从实现的用户那个里接受jar,并将其放在类路径中,然后重新启动应用程序
请帮助我,我应该如何着手实现这一点。
谢谢这似乎可以用一个“”来解决。您将拥有一个定义常见行为的抽象基类和抽象类的5个具体实现,而不是5个JAR。当您点击阅读football的按钮时,您将执行football实现,依此类推。这看起来可以用“”来解决。您将拥有一个定义常见行为的抽象基类和抽象类的5个具体实现,而不是5个JAR。当您点击阅读football的按钮时,您将执行football实现,依此类推。您不应该这样做。相反,定义一个具有
playGame()
方法的接口Play
,并创建实现该接口的不同类。您不应该这样做。相反,定义一个具有playGame()
方法的接口Play
,并创建实现该接口的不同类。使用抽象工厂模式或工厂模式
public Game createGame(GameType gameType){
Game game = null;
Switch(gameType){
Case FOOTBALL :
game = new FootBall();
Case CRICKET :
game = new Cricket()
}
return game;
}
其中CreateGame方法是工厂类方法。GameType是Enum使用抽象工厂模式或工厂模式
public Game createGame(GameType gameType){
Game game = null;
Switch(gameType){
Case FOOTBALL :
game = new FootBall();
Case CRICKET :
game = new Cricket()
}
return game;
}
其中CreateGame方法是工厂类方法。GameType是Enum您可以使用工厂模式来实现您的目标
public void playGame(GameType gameType){
Game game = null;
if(gameType instanceof Football){
game = new Football();
}else if(gameType instanceof BasketBall){
game = new BasketBall();
}
game.play();
}
您可以搜索有关工厂模式的更多信息。您可以使用工厂模式来实现您的目标
public Game createGame(GameType gameType){
Game game = null;
Switch(gameType){
Case FOOTBALL :
game = new FootBall();
Case CRICKET :
game = new Cricket()
}
return game;
}
public void playGame(GameType gameType){
Game game = null;
if(gameType instanceof Football){
game = new Football();
}else if(gameType instanceof BasketBall){
game = new BasketBall();
}
game.play();
}
您可以搜索更多关于工厂模式的信息。我可以通过创建这样的classloder从jar加载
public Game createGame(GameType gameType){
Game game = null;
Switch(gameType){
Case FOOTBALL :
game = new FootBall();
Case CRICKET :
game = new Cricket()
}
return game;
}
File file = new File("c:\\myjar.jar");
URL url = file.toURL();
URL[] urls = new URL[]{url};
ClassLoader loader = new URLClassLoader(urls);
Class cls = loader.loadClass("com.mypackage.Play");
但它可能不会被垃圾收集,也可能会发生泄漏我可以通过创建这样的classloder从jar加载
File file = new File("c:\\myjar.jar");
URL url = file.toURL();
URL[] urls = new URL[]{url};
ClassLoader loader = new URLClassLoader(urls);
Class cls = loader.loadClass("com.mypackage.Play");
但它可能会发生,它不会垃圾收集,并可能会发生泄漏