0

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

目前我无法弄清楚如何构建我的类 - 哪个类应该负责什么(我想尽可能好地使用通用模式,例如 SRP,而不会“过度杀伤”它。)。

在查看可用性检查时,是否应该有一个“额外的”类来执行 ping 请求,还是应该由计算机对象(实例)本身来完成?如果应该使用额外的类,应如何通知计算机(和其他)对象有关更改的可用性?拥有房产?

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

4

1 回答 1

1

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

开放讨论和完善。

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;
    }
}
于 2018-03-10T01:07:49.830 回答