【发布时间】:2017-11-13 18:46:48
【问题描述】:
我试图想象一个具有多种行为的用例参与者是如何实际出现在应用程序中的。
举一个现实世界但过于简单化的例子:
环境咨询机构有一名项目经理负责: 创建和管理客户;项目;设施和建筑物,以及设备和用品。其中很多只是 CRUD,但还有很多。
拥有一个隐含所有行为的 ProjectManager 类是否有意义?只看用例图,我可以看到需要 20 多种方法。
【问题讨论】:
我试图想象一个具有多种行为的用例参与者是如何实际出现在应用程序中的。
举一个现实世界但过于简单化的例子:
环境咨询机构有一名项目经理负责: 创建和管理客户;项目;设施和建筑物,以及设备和用品。其中很多只是 CRUD,但还有很多。
拥有一个隐含所有行为的 ProjectManager 类是否有意义?只看用例图,我可以看到需要 20 多种方法。
【问题讨论】:
与其把所有的鸡蛋都放在一个篮子里,为什么不将职责划分为不同的“角色”,然后将这些角色分配给 PM?
我的意思是,请耐心等待并想象一下:
界面:客户关系 职责:与客户相关的操作(例如创建客户、与他们保持良好关系等)
界面:OfficeManagement 职责:获取开展业务所需的设备,并提供必要的供应以使用它们等。
界面:项目管理 职责:监督和监督项目等
还有他们
类:ProjectManager 实现 CustomerRelations、OfficeManagement 和 ProjectManagement。
这样,如果需要,您可以轻松地重新调整职责。
【讨论】:
我们也可以这样想象。添加到@Alp的回答
一个项目经理有 X 个职责。(客户 关系、办公室管理)
接口:CustomerRelations 职责:与客户相关的操作(例如,从客户那里获取反馈等)
界面:办公室管理职责:
类:ProjectManager 可以有 ICustomerRelations、IOfficeManagement 和 IProjectManagement。
Class ProjectManager
{
IOfficeManagerment officeManagement;
ICustomerRelations customerRelations;
public ProjectManager(IOfficeManagerment management, ICustomerRelations)
{
\\Inject your dependencies
}
public void GetFeedBack()
{
customerRelations.GetFeedback();
}
public void GetEquipements()
{
officeManagement.GetAvailableEquipments();
}
}
注意事项
【讨论】: