1

我有一个具有以下方法的数据类:

  • 执行UDIQuery(字符串查询)
  • ExecuteSelectQuery(字符串查询)
  • ExecuteSP(string anme, string[,] params)

我有很多使用数据类的类。现在我想创建一个类图,但我不知道这些类与数据类有什么样的关系。是复合的吗?是 1:1 还是 .. ?

使用数据类的类的一个示例是 Staff 类。此类有一个方法 Load(),它将加载一个带有员工 ID 的员工对象。此方法包含一个查询,该查询传递给 Data 类的 ExecuteSelectQuery(string query) 方法。

编辑:数据类不是静态的。但是,我有我的怀疑。我其实不知道该怎么做。关键是,它唯一做的就是执行查询并返回结果。

4

8 回答 8

3

我建议它是一种使用依赖关系。

有关简要说明,请参见此处

于 2009-03-06T12:19:50.257 回答
1

我会查询你的类的命名。类名通常应该是单数名词。例子;

  • 窗户
  • 交易

数据是复数,无论如何我认为它应该是数据库。

同样对于 Staff - 再次是复数,我认为它应该是 MemberOfStaff。当然,除非它是一份工作人员名单,在这种情况下,我会称它为部门、项目或部门之类的东西——无论你的问题领域是什么。

你会发现为类想出好名字非常困难,但值得付出努力。

于 2009-03-06T12:30:36.190 回答
0

聚合、复合和 1 对 1 关系之间的区别有点模糊,有些武断。

如果一个类拥有另一个类(负责生命周期),我使用聚合(开放菱形)。

在所有其他情况下,我使用 1 对 1 关系。

于 2009-03-06T12:21:24.760 回答
0

类是由使用它的类实例化的还是方法是静态的?如果它们是静态的,我会将其表示为不合格的依赖项(从使用数据类的类指向数据类的虚线箭头)

如果使用数据类的类创建自己的该类的私有实例,这将是 1:1 组合(假设数据类实例的生命周期与使用它的对象相关联)

于 2009-03-06T12:21:33.887 回答
0

我不能不评论您的整体设计,我会尝试将 Load 方法移出 Staff 类,以便该类不直接依赖于 Data 类。

在您现有设计的范围内,我建议如下:如果人员类包含数据类的实例变量,则它是一个关联。如果实例化数据类只是为了检索实例,那么它只是给定类型的依赖项,就像@toolkit 所说的那样。

于 2009-03-06T12:23:47.047 回答
0

没有足够的数据。

给我们一些课程大纲之类的。据我所见,我实际上不会将其称为数据类(它看起来更像是数据访问器),这听起来可能是单例(多:1,聚合或关联),或者如果实例化将是1:1 组件。

于 2009-03-06T12:24:14.333 回答
0

现在我想创建一个类图,但我不知道这些类与数据类有什么样的关系。

我们也没有 - 您只描述了 Data 类,并没有说明 Staff 如何获取它使用的 Data。

如果 Staff 持有数据类的一个或多个实例,则 Staff 和 Data 之间存在关联,或者 Staff 具有 Data 类型的属性(如果 Data 具有值语义)。

如果 Data 实例被多个 Staff 实例引用,并且它们的生命周期依赖于 Staff 实例的引用,那么这可以显示为聚合关系。如果 Data 实例没有在 Staff 实例之间共享并且它们的生命周期依赖于被引用,那么这可以显示为组合关系。

如果 X 不保留它使用的 Data 实例,则使用关系是合适的。

于 2009-03-06T12:51:39.867 回答
0

依赖和使用是两种最弱的“连接器”。您可能会考虑刻板印象、关键字来细化关系。您可能会发现实例化、调用、创建、发送构造型工作。尽管正确的答案似乎是使用,但没有更多信息。

于 2009-03-24T03:58:10.450 回答