我想创建一个维护计算机对象列表的应用程序,检查这些对象的可用性(使用Ping),如果它们可用,则使用PSExec在管理员列表中添加或删除用户。< / p>
目前我无法弄清楚如何构建我的类 - 哪个类应该负责什么(我想使用常见的模式,如SRP,尽可能没有&#34;过度使用&#34;它。 )。
在查看可用性检查时,是否应该有&#34;额外&#34;做ping请求的类还是应该由计算机对象(实例)本身完成?如果应该使用额外的类,应该如何通知计算机(和其他)对象有关更改的可用性?有财产?
关于这种东西的想法让我发疯并阻止我进一步...... 我知道没有正确的答案,因为这显然是一个设计和意见问题,但如果我能在这里获得专家意见,我会很感激 - 希望这会让我重回正轨。
答案 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;
}
}