'经理'类作为对象列表

时间:2017-07-05 21:07:49

标签: c# oop

我实际上正处于重构项目的设计阶段(我们再次制作软件,因为它基于神级)。

所以,我学到了很多关于设计的知识,并且我们使用统一过程来达到解耦的类图。现在,我们正在编写一些代码(就像草稿或其他东西一样)来验证我们一直在开发的模型,并且我正在努力创建一些类:

首先,我总是尝试遵循单一责任原则,这引出了我的问题:

我有两个类:Camera(连接到PC的相机)和HeadSensor(连接到PC的许多物理设备组,将与相机一起使用)。< / p>

关键是,我的软件开始检查所有摄像机并实例化连接的摄像机。我已经创建了一个CameraManager类,它将所有这些类组合在一起,如下所示:

class CameraManager
{
    private List<ICamera> _cameras = new List<ICamera>();
    public ReadOnlyCollection<ICamera> Cameras => new List<ICamera>(_cameras).AsReadOnly();

    public ICamera this[string serial] => _cameras.Find(camera => camera.Serial == serial);

    public void LoadCameras()
    {
        // Still not implemented code, as we're in the design phase.
        throw new NotImplementedException();
    }
}

并且,在用户选择连接到每个摄像头的头部传感器(我现在不会指定)之后,软件应该通过另一个管理员创建HeadSensor HeadSensorManager

public class HeadSensorManager
{
    private List<HeadSensor> _headSensors = new List<HeadSensor>();
    public ReadOnlyCollection<HeadSensor> HeadSensor => new List<HeadSensor>(_headSensors).AsReadOnly();

    public HeadSensor this[int index] => _headSensors.ElementAt(index);

    public void CreateHeadSensor(ICamera camera)
    {
        if (this[camera.Serial] != null)
        {
            throw new ArgumentException("The selected Camera is already connected to a Head Sensor.");
        }
        _headSensors.Add(new HeadSensor(camera));
    }
}

如您所见,此类检查是否存在使用传递的Camera的现有HeadSensor。

最后,我的问题是:是否有一种设计模式来实现这一最佳方式?因为我在这里读到Manager对于课程来说不是一个好名字,也许它比我的HeadSensors“分组”更有责任感。

寻找答案, Factory 设计模式不适合我想做的事情,我应该创建一个新课程还是可以的?

不知道我是否清楚这一点,但我找不到任何关于这个话题。

0 个答案:

没有答案