刚从Star UML开始绘制class diagram

与任何应用程序一样,MyBLL(业务层)在与Model(数据库层)进行交互之后会创建DAO的实例。

或多或少,简化的(为清楚起见)类图如下所示:



显然,完成BLL之后将不再使用模型类。


我应该在这里使用什么? aggregationcomposition,同时将MyBLL映射到MyModel
我使用了从compositionMyBLLMyDAO关系。我的逻辑是在BLL层存在之后,MyDAO将不再存在,因为它在MyBLL中被引用。它是否正确?


注意:这是针对我使用C#创建的WebAPI项目。

最佳答案

聚合意味着子代可以不存在父代而存在。因此,Classroom(父级)和Student(子级)是最常见的示例。在这里您可以独立拥有教室和学生。

复合意味着子代不能不存在父代而存在。因此,House(父级)和Room(子级)是最常见的示例。没有房间就不能在房间里的房间。

在没有确切看到您如何编码的情况下,我猜测您将拥有以下代码:

1)MyModel可能是一个复合关系,因为它一生都包含在MyBLL中(与其他模型一起)。当MyBLL超出范围时,MyModel也将超出范围。

2)MyDAO可能是一个聚合,因为它可以不存在MyBLL而存在,因为它被其他组件使用了吗?即它可能是由主机在MyBLL之外创建的,并已注入到您的BLL中吗?

根据您设计系统的实际方式,这两种说法可能都不正确。

09-11 17:26