我想创建一个应用程序来维护计算机对象的列表,检查这些对象的可用性(使用Ping),如果它们可用,则使用PSExec在管理员列表中添加或删除用户。
目前我不知道如何构建我的类-哪个类应该负责什么(我想使用通用的模式,比如SRP,尽可能好地使用它,而不是“过度杀伤力”)。
在查看可用性检查时,是否应该有一个执行ping请求的“额外”类,或者这是否应该由计算机对象(实例)本身完成?如果应该使用额外的类,应该如何通知计算机(和其他)对象已更改的可用性?拥有一处房产?
关于这类事情的想法让我发疯,并阻止我更进一步……我知道没有正确的答案,因为这显然是一个设计和意见问题,但如果我能在这里得到专家的意见,我会很感激-希望这能让我回到正轨。
发布于 2018-03-10 09:07:50
嗨,我已经根据所提供的描述提出了以下内容。Computer类遵循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;
}
}https://stackoverflow.com/questions/49203894
复制相似问题