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) 在DbTransaction
和TaskList
之间创建一个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()
操作。
下面是一个例子:
我正在寻找在 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) 在DbTransaction
和TaskList
之间创建一个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()
操作。
下面是一个例子: