刚从Star UML
开始绘制class diagram
。
与任何应用程序一样,MyBLL
(业务层)在与Model
(数据库层)进行交互之后会创建DAO
的实例。
或多或少,简化的(为清楚起见)类图如下所示:
显然,完成BLL之后将不再使用模型类。
我应该在这里使用什么? aggregation
或composition
,同时将MyBLL
映射到MyModel
。
我使用了从composition
到MyBLL
的MyDAO
关系。我的逻辑是在BLL
层存在之后,MyDAO
将不再存在,因为它在MyBLL
中被引用。它是否正确?
注意:这是针对我使用C#创建的WebAPI
项目。
最佳答案
聚合意味着子代可以不存在父代而存在。因此,Classroom
(父级)和Student
(子级)是最常见的示例。在这里您可以独立拥有教室和学生。
复合意味着子代不能不存在父代而存在。因此,House
(父级)和Room
(子级)是最常见的示例。没有房间就不能在房间里的房间。
在没有确切看到您如何编码的情况下,我猜测您将拥有以下代码:
1)MyModel可能是一个复合关系,因为它一生都包含在MyBLL中(与其他模型一起)。当MyBLL超出范围时,MyModel也将超出范围。
2)MyDAO可能是一个聚合,因为它可以不存在MyBLL而存在,因为它被其他组件使用了吗?即它可能是由主机在MyBLL之外创建的,并已注入到您的BLL中吗?
根据您设计系统的实际方式,这两种说法可能都不正确。