如何通过中间层在Java中调用方法?

问题描述 投票:0回答:1

这是软件工程课程艰巨的编程任务的一部分。目的是在NetworkLayerInterface和ApplicationLayerInterface之间添加一层安全性。该中间层称为PresentationLayerInterface。

属于网络层UML图的一部分的抽象方法是:

openConnection()
closeConnection()
sendMessage(String)
receiveMessage(String)
getPresentationLayer()
setPresentationLayer()

属于应用层UML图的抽象方法是:

start()
stop()
sendMessage(String)
receiveMessage(String)
getPresentationLayer()
setPresentationLayer()

作为表示层的UML图的一部分的抽象方法是:

start()
stop()
sendMessage(String)
receiveMessage(String)
getNetworkLayer()
setNetworkLayer()
getApplicationLayer()
setApplicationLayer()

在不使用PresentationLayer作为中介的应用程序层的初始实现中,start()方法如下所示。

@Override
public void start() {
    //TODO: Part 2: Replace with method invocation of the the presentation layer
    networkLayer.openConnection();
}

start()方法内部的openConnection()方法在实现网络层接口的TCPNetwork.java文件中实现。如下:

@Override
public void openConnection() {
    System.out.println("Connecting to server ...");
    try {
        socket = new Socket(host, port);
        socketInput = new Scanner(new InputStreamReader(socket.getInputStream()));
        socketOutput = new PrintWriter(socket.getOutputStream(), true);
        waitForIncommingMessages();
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("Connection established.");
 }

如果我不能再(根据分配)使用内部的[[networkLayer.openConnection();,则如何调用方法start()?

例如,我尝试了以下方法:

public void start() { //TODO: Part 2: Replace with method invocation of the the presentation layer //networkLayer.openConnection(); Originally this //presentationLayer.start(); //presentationLayer.openConnection(); Can't add method to Presentation Interface

}

我确实是Java的业余用户,所以请不要对已有知识进行假设。

java security methods interface
1个回答
1
投票
我的答案将加入

@ codebrane评论。

如果要从PresentationLayer调用openConnection()方法,则必须获取NetworkLayer对象才能进行调用,因此需要调用presentationLayer.getNetworkLayer().openConnection()
© www.soinside.com 2019 - 2024. All rights reserved.