我必须编写一个类,它使用SNMP从网络设备请求信息。 首先要找出设备类型。 第二个 - 对设备的调查。
我想编写一个只需要IP地址的类,它将根据设备类型收集信息。
但我无法理解如何以最好的方式做到这一点。
我不喜欢这个,因为有两个SNMP类。
可能有一个简单的代码,它是如何在不同的应用程序中实现的。
现在我有类似这样的模板:
class NetworkDevice
{
SNMP snmp;
GenericDevice gd;
....
public string GetObjectID()
{
return snmp.Get(mib).ToString();
}
public void Scan()
{
string obj_id = GetObjectID();
if(obj_id.StartsWith(".1.3.6.1.4.1.15")
gd = new DeviceKind_1(ip_addr);
if(obj_id.StartsWith(".1.3.6.1.4.1.181")
gd = new DeviceKind_2(ip_addr);
gd.Scan();
}
}
class GenericDevice
{
private SNMP snmp;
private DeviceInfo Info;
....
public void Scan()
{
}
}
class DeviceKind_1 : GenericDevice
{
....
public void override Scan()
{
DeviceInfo.DEVICE_SPECIAL_PARAM_1 = snmp.Get(mib);
....
}
....
}
class DeviceKind_2 : GenericDevice
{
....
public void override Scan()
{
DeviceInfo.DEVICE_SPECIAL_PARAM_1 = snmp.Get(mib);
....
}
....
}
*代码已编辑*
答案 0 :(得分:0)
我看到了一些问题:
好处是您有多个类,因此必须很容易将所有通用功能保留在GenericDevice中,NetworkDevice中的所有网络特定功能,并为特定设备提供单独的类。
考虑使用(抽象)工厂模式生成正确的类。这是一种设计模式。