【问题标题】:Use-case actor with many behaviors具有许多行为的用例参与者
【发布时间】:2017-11-13 18:46:48
【问题描述】:

我试图想象一个具有多种行为的用例参与者是如何实际出现在应用程序中的。

举一个现实世界但过于简单化的例子:

环境咨询机构有一名项目经理负责: 创建和管理客户;项目;设施和建筑物,以及设备和用品。其中很多只是 CRUD,但还有很多。

拥有一个隐含所有行为的 ProjectManager 类是否有意义?只看用例图,我可以看到需要 20 多种方法。

Project Management Use-Case

【问题讨论】:

    标签: oop ooad


    【解决方案1】:

    与其把所有的鸡蛋都放在一个篮子里,为什么不将职责划分为不同的“角色”,然后将这些角色分配给 PM?

    我的意思是,请耐心等待并想象一下:

    界面:客户关系 职责:与客户相关的操作(例如创建客户、与他们保持良好关系等)

    界面:OfficeManagement 职责:获取开展业务所需的设备,并提供必要的供应以使用它们等。

    界面:项目管理 职责:监督和监督项目等

    还有他们

    类:ProjectManager 实现 CustomerRelations、OfficeManagement 和 ProjectManagement。

    这样,如果需要,您可以轻松地重新调整职责。

    【讨论】:

    • 是的,这就是我要找的,谢谢。我正在考虑将项目经理分解为子经理,但您的答案显然是更好的方法。干杯,
    【解决方案2】:

    我们也可以这样想象。添加到@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();
        }
    }
    

    注意事项

    1. 项目经理不必了解办公室的内部情况 管理。他将职责委托给其他人。例如。怎么获得 可用资源。他只是想知道可用的资源。

    【讨论】:

      猜你喜欢
      • 2014-08-08
      • 2014-12-30
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多