【问题标题】:uml relationships in this java code此 java 代码中的 uml 关系
【发布时间】:2014-03-28 21:23:18
【问题描述】:

我想听听这里存在的所有关系。我假设这里存在1-1多重性的依赖和聚合等关系?

public class Main {

    public Main() {
        Model model = new Model();
        View view = new View();
        Controller controller = new Controller(view, model);
    }

    public static void main(String[] args) {
        new Main();
    }

}

public class Controller {

    private Model model;
    private View view;

    public Controller(Model model, View view) {
       this.model = model;
       this.view = view;
    }

}

public class Model { ... }

public class View { ... }

【问题讨论】:

标签: java uml relationships


【解决方案1】:

很简单,这里不需要逆向工程(从代码构建模型)。

Main 具有三种关联:一种与Model 关联,一种与View 关联,一种与Controller 关联,而Controller 具有两种关联:一种与Model 关联,一种与View 关联。

p>

请注意,不需要关联 Main-ModelMain-View,因为它们可以通过 main.controller.modelmain.controller.view 导出。

关联Main-Controller(以及Main-ModelMain-View)可以被视为/建模为组合,因为主程序实例(进程)由控制器组成实例,它与模型和视图实例捆绑在一起。这三个组合都带有生命周期依赖关系:任何模型、视图和控制器实例都存在依赖于其主聚合实例。

【讨论】:

  • 我最多将 Main 与 Model、Controller 和 View 的关系称为依赖项,因为它们仅在其构造函数中创建,而不是在类的字段中创建。奇怪的选择,但仍然。你可能会花很多时间来讨论控制器模型和控制器视图是聚合还是关联。但最好以不同的方式度过时间,所以我喜欢你如何掩饰这一点。 :)
  • 你说得对,这段代码的意图并不是很清楚。在构造函数中声明局部变量以引用模型、视图和控制器是没有意义的(参见,例如,stackoverflow.com/questions/20138948/variables-in-constructor)。这就是为什么我将其解释为(没有太多考虑)打算通过声明为类成员的正常引用属性来进行正常引用。
猜你喜欢
  • 2017-09-27
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
  • 2012-12-02
  • 2014-12-17
  • 1970-01-01
  • 2019-04-15
相关资源
最近更新 更多