如何通过网络将命令模式应用于对象

时间:2016-05-02 13:50:10

标签: java networking

例如,假设我有两台运行由Node类表示的节点的不同计算机。每个节点都在侦听ServerSocket。我正在尝试应用命令模式。我有一个界面Command

public interface Command{
    public void execute();
}

现在我想创建一个实现Command的类,这样当它被执行时,它将在屏幕上显示发送给它的Node的id。如果我无法获取对我想要打印其ID的Node对象的引用,那么如何才能完成此操作,因为它在远程计算机上执行?

public class PrintCommand implements Command{
    public void execute(){
          System.out.println("This node's id is " + ??);
}

命令模式是否真的可以申请在同一台机器上执行?

1 个答案:

答案 0 :(得分:1)

您可以将命令模式用于网络练习。正如您所写,您无法在远程计算机上获得Node-Object的引用。那是错的。使用Java RMI等技术,可以使用位于另一个JVM中的远程对象的引用。如果你知道之前没有解决网络问题,一开始可能有点难以理解,但事实上它很容易使用。

如果你想更加基础,你可以通过你的套接字从机器A发送一个字符串或者只是一个数字到机器B,它将从命令接口调用execute-Method。由于机器B知道自己的节点对象,因此您可以非常轻松地将其打印出来。如果要在机器B上打印出节点A的ID,则必须将其ID发送给B.

这种方法可能是使用序列化。您可以将对象序列化为例如json,并通过网络连接发送。在另一台机器上,将其反序列化为对象并将其传递给execute() - 方法。