代码之家  ›  专栏  ›  技术社区  ›  geejay

如何将模型与视图分离?

  •  3
  • geejay  · 技术社区  · 14 年前

    这些对象最终在富客户端应用程序中呈现为视图(如窗体)。

    我现在意识到,这种观点已经潜入了模型。

    技术:Java、Java注释、EclipseRCP

    编辑:我的问题是理论性的,但我也希望得到一些具体的(实现)建议。

    5 回复  |  直到 14 年前
        1
  •  1
  •   DJClayworth    14 年前

    冒着说出显而易见的风险,您需要做的是将与显示相关的信息存储在其他地方。不要将页面放在模型代码中-为界面创建一个对象,让它包含页面对象,并让每个页面知道它显示的值。这可能需要一定的重构。

        2
  •  1
  •   tkr    14 年前

    可以替换批注:

    @DisplayName("My Fancy Name") 
    @DisplayGroup("My Fancy Group") 
    public String myProperty;
    

    通过单独的描述符类:

    Descriptor desc = new Descriptor(MyClass.class, "myProperty");
    desc.setDisplayName("My Fancy Name");
    desc.setDisplayGroup("My Fancy Group");
    

        3
  •  0
  •   Steve Weet    14 年前

    您可以查看MVC模式并将控制器引入到mix中,以提供模型和视图之间的通信。

    这可以防止视图潜入模型,因为视图从不与模型对话它只与负责模型与视图之间所有交互的控制器对话

        4
  •  0
  •   Andreas Dolk    14 年前

    如果我没说错的话-你用模型类作为(静态)模型来创建(部分)视图?为什么不-在你的情况下,模型 (带有注释)是一个模型 另一个。

    @Textfield )我看没问题。如果模型已经包含对视图对象的引用(如对文本字段的引用),则需要重构。最简单的方法是将模型类移动到一个单独的插件中,并且不添加任何*.ui类型和视图插件作为依赖项。然后修复错误;)

    ... 看看jface数据绑定!在MVC/MVP架构中非常有用!

        5
  •  0
  •   Neil McGuigan    12 年前

    视图应具有对模型的引用,但模型不应具有对视图的引用。

    视图可以写入模型。

    视图侦听模型上的事件,例如属性更改或集合更改。

    然后,当模型更改时,视图会自动更新。

    模型上绝对不应该有将模型呈现为视图的方法。