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

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类的关系的正确方法。

最佳答案

正确的UML图与是否存在工厂或工厂是否为具有静态方法的静态类无关。事实是,DbTransaction的实例在名为DbTask的类成员变量中维护类型为taskList的实例的列表。这意味着您的UML应该显示与DbTransaction类具有单向关联的DbTask类。该单向关联应具有称为taskList且具有多个0..*的关联结束属性。

如果愿意,还可以从DbTransaction类到TaskList类绘制一个依赖项,以表明已调用该依赖项。您还可以将buildTaskList()操作建模为静态功能(通过设置isStatic=true,它将在类图上加下划线)。您甚至可以通过将依赖项的客户端从DbTransaction类更改为其buildTaskList()操作,并将该依赖项的提供者从TaskList类更改为其buildTaskList()操作来真正地确定具体情况。

这是给你的一个例子:

c# - UML静态工厂-LMLPHP

关于c# - UML静态工厂,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37657699/

10-11 06:32