0

在这里学习模式和玩 Jar 文件。不确定这是否可能...

我有一个包含 3 个主要部分的应用程序(服务器):响应、请求和路由器。我的路由器最初是我的服务器中的一个类。然后我把它拉出来,做成一个单独的罐子。让它工作。现在我想制作多个罐子,并让服务器根据菜单命令使用一个罐子。服务器有两个可用的外部库(即罐子)(A 和 B)。每个都是自定义路由器类。

我想在我的服务器菜单中编写代码,如下所示:

Server:  "Which router do you want to use?"
User:  "A"
*Server uses A's Router.*

或者

Server:  "Which router do you want to use?"
User:  "B"
*Server uses B's Router*

这是我的服务器 run() 方法...

在尝试连接到多个路由器之前:

public void run() {
    Request request = new Request();
    Router router = new Router();
    Response response = new Response();

    HashMap receivedRequest = request.get(Socket);
    byte[] builtResponse = router.getResponse(receivedRequest);
    response.send(Socket, builtResponse);
    Socket.close();
}

我的尝试(但不工作):

public void run() {
    Request request = new Request();
    Router router
    if "A"
      router = new A.Router(workingDirectory, publicDirectoryPath, routesFilePath, htAccessFilePath);
    else
      router = new B.Router(workingDirectory, publicDirectoryPath, routesFilePath, htAccessFilePath);
    Response response = new Response();

    HashMap receivedRequest = request.get(Socket);
    byte[] builtResponse = router.getResponse(receivedRequest);
    response.send(Socket, builtResponse);
    Socket.close();
}

问题是我的“路由器”变量必须声明为某种类型(A 路由器或 B 路由器)。如果我创建一个接口,那么我必须在每个 Jar 中实现该接口,我不能这样做,对吧?

想知道这是否可能?

4

1 回答 1

2

如果我创建一个接口,那么我必须在每个 Jar 中实现该接口,我不能这样做,对吧?

是的,你可以这样做。您可以有一个公开接口的 jar A 和另一个具有接口实现并处理接口行为的 jar B。请注意,jar B 取决于 jar A 的存在才能工作。

于 2013-09-25T16:46:59.887 回答