UML 静态工厂

UML static factory

我正在寻找在 UML class 图中描述以下情况的正确方法:

public class DbTransaction
{
    private List<DbTask> taskList;

    public void buildTaskList() 
    {
       this.taskList = taskListFactory.buildTaskList();
    }
}

 public static class TaskListFactory
 {
    public static List<DbTask> buildTaskList()
    {
         List list = new List<DbTask>();
         return list;
    }
 }

public class DbTask
{
   .....
}

DbTransaction 与 DbTask 关联,但我不确定绘制与静态 TaskList 的关系的正确方法 class。

我觉得画这个的可能性比较大

1) 在DbTransactionTaskList之间创建一个link并调用关联uses

2)不创建link但是写个注释说这是一个工厂,被交易使用

这也取决于你想展示面向对象的正确模型还是你想展示系统的行为。

我建议使用选项 2)。当您不仅要显示这三个组件的行为时。

一个正确的UML图与工厂是否存在,或者工厂是否是静态class有静态方法无关。事实上,DbTransaction 的一个实例在名为 taskList 的 class 成员变量中维护了一个类型为 DbTask 的实例列表。这意味着您的 UML 应该显示 DbTransaction class 与 DbTask class 的单向关联。该单向关联应该有一个名为 taskList 的关联端 属性,其重数为 0..*.

如果你愿意,你也可以画一个从DbTransaction class到TaskList class的依赖关系来表示它被调用了。您还可以将 buildTaskList() 操作建模为静态特征(通过设置 isStatic=true,这将在 class 图上将其显示为下划线)。您甚至可以通过将该依赖项的客户端从 DbTransaction class 更改为它的 buildTaskList() 操作,并将该依赖项的供应商从TaskList class 到它的 buildTaskList() 操作。

下面是一个例子: