UML静态工厂

时间:2016-06-06 12:37:50

标签: c# class static uml

我正在寻找在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类的正确方法。

2 个答案:

答案 0 :(得分:3)

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

如果您愿意,还可以从DbTransaction类到TaskList类绘制依赖关系,以指示它已被调用。您还可以将buildTaskList()操作建模为静态功能(通过设置isStatic=true,它将在类图中将其显示为下划线)。通过将该依赖关系的客户端从DbTransaction类更改为其buildTaskList()操作以及来自TaskList类的该依赖关系的提供者,您甚至可以真正特定进行buildTaskList()操作。

以下是您的示例:

enter image description here

答案 1 :(得分:0)

我认为有更多可能来画这个。

1)在DbTransactionTaskList之间创建一个链接,并调用该关联使用

2)不创建任何链接,但写下一个说明并说这是一个工厂,并由交易使用

这也取决于你想要显示面向对象的正确模型,或者你想要显示系统的行为。

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