我想创建一个游戏,将工作在本地和在线。

我的第一个想法是创造条件,都将由GUI业务逻辑需要方法的接口,然后有一个网络实现与本地实现。

此工作正常的请求 - 响应消息。但关于该服务器发送消息,其中,I必须更新一些GUI组件(即的JLabel)什么?

我的第一个解决方案,这是实现监听器,其中在执行每一次变化都会触发一个事件。该GUI将登记并适当地改变它的成分。然而,呼吁触发事件在业务逻辑看起来有点不对劲。

我是在正确的轨道?因为我觉得我不是。任何建议?

感谢您。

注意:客户端是一个简单的Java Swing GUI

有帮助吗?

解决方案

你所描述将成为保持模型独立的呈现问题的,这是一件好事的目标是什么。这也将帮助您设计,开发和模型的维护过程中,因为你可以写的基础上,单元测试模型中的某些变化应该火特定的事件,而不用担心这可能看起来像一个屏幕上。

和,当然,它释放您具有用于不同的环境不同的GUI设计。

关键是,这些事件应约在模型中的状态变化,和关于在表示层拟采取的行动/交涉。让表示层处理是否/如何对模型响应事件。

其他提示

我得承认,我做网站开发,所以我没有与Swing很多经验。

不过,我一直以为我会接近它的办法是打破应用到包/浏览/模型,和/控制器。的关系将是单向:/控制器将知道两者/模型和/视图,但既不将从/控制器或彼此

导入任何类。

在/视图层部件绝不会JFrames;他们会永远是JPanel的或另一个根据需要,可以组成在一起成为JFrames合适的容器中。每个就得监听器接口,构造器来初始化引用,并会推迟这些事件处理:

public class ExamplePanel extends JPanel implements ActionListener
{
    private JButton button;
    private ActionListener buttonListener;

    public ExamplePanel(ActionListener buttonListener)
    {    
        this.button = new JButton("Do Something");
        this.buttonListener = buttonListener;
        this.button.addListener(this.buttonListener);
    }

    public void actionPerformed(ActionEvent e)
    {
        this.buttonListener.actionPerformed(e);
    }
}

此安排与依赖注入效果很好,因为现在控制器可以选择使用本地或远程执行该监听器接口,改变的方式,不影响客户端的所有行为。

我得承认,我从来没有跟着它一路过关斩将。

在春天人有丰富的Swing客户端模块,但它似乎已经失宠。看起来他们已经决定,BlazeDS的方向是丰富的客户提供更好的选择。但是,也许你可以从他们的做法中收集一些设计理念。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top