课堂责任

时间:2018-03-09 23:56:05

标签: c# class responsibility

我想创建一个维护计算机对象列表的应用程序,检查这些对象的可用性(使用Ping),如果它们可用,则使用PSExec在管理员列表中添加或删除用户。< / p>

目前我无法弄清楚如何构建我的类 - 哪个类应该负责什么(我想使用常见的模式,如SRP,尽可能没有&#34;过度使用&#34;它。 )。

在查看可用性检查时,是否应该有&#34;额外&#34;做ping请求的类还是应该由计算机对象(实例)本身完成?如果应该使用额外的类,应该如何通知计算机(和其他)对象有关更改的可用性?有财产?

关于这种东西的想法让我发疯并阻止我进一步...... 我知道没有正确的答案,因为这显然是一个设计和意见问题,但如果我能在这里获得专家意见,我会很感激 - 希望这会让我重回正轨。

1 个答案:

答案 0 :(得分:1)

您好我根据提供的说明提出了以下内容。计算机类遵循SRP,因为它只关注计算机对象。所有操作都委托给专门的类。目前我只添加了一个类来检查可用性。我们还可以添加一个专门的类来添加删除用户。

开放供讨论和改进。

public class Computer
{
    // properties of the computer class
    public IList<User> Users;

    // IAvailabiity checker
    private readonly IAvailabilityChecker _checker;

    // constructor
    public Computer(IAvailabilityChecker checker)
    {
        this._checker = checker;
    }

    // operations
    public void AddUser()
    {
        if (this._checker.IsAvailable())
        {
            // add user
        }
    }

    public void RemoveUser()
    {
    }
}

public class User
{
}

public interface IAvailabilityChecker
{
    bool IsAvailable();
}

public class AvailabilityChecker
{
    public bool IsAvailable()
    {
        // availability checker logic
        return true;
    }
}