C# 重构代码,使基类只包含一个公共成员
} 我有两门课,一门是StreamManager,另一门是StreamManager。正如您在上面看到的,有一个成员变量Vehicle类型,在这些类别中很常见。C# 重构代码,使基类只包含一个公共成员,c#,oop,base-class,C#,Oop,Base Class,} 我有两门课,一门是StreamManager,另一门是StreamManager。正如您在上面看到的,有一个成员变量Vehicle类型,在这些类别中很常见。 这有意义吗?我是否可以重构“iHicle Vehicle”到一个基类?这个问题对我来说似乎非常假设。看看你们的课程,我根本看不出它们存在的原因。您有AIp和BIp,但它们显然是IP地址,所以有两个不同的属性是没有意义的。我只需要一个StreamManager类就可以了。这些类是相同的。你为什么有两个?您可以将它们重构为单个StreamM
这有意义吗?我是否可以重构“iHicle Vehicle”到一个基类?这个问题对我来说似乎非常假设。看看你们的课程,我根本看不出它们存在的原因。您有AIp和BIp,但它们显然是IP地址,所以有两个不同的属性是没有意义的。我只需要一个StreamManager类就可以了。这些类是相同的。你为什么有两个?您可以将它们重构为单个StreamManager类,然后为AStream实例化一个,为BStream实例化另一个?var aStream=新的StreamManager;var bStream=新的StreamManager;您的问题的答案是肯定的,您可以将车辆移动到基类。还有别的吗?
public class AStreamManager
{
public IVehicle Vehicle { get; set; }
public string AIp { get; set; }
public int APort { get; set; }
public delegate NetworkStream ConnectToAStream(string host, int port);
public AStreamManager(IVehicle vehicle, string IP, int Port)
{
Vehicle = vehicle;
AIp = IP;
APort = Port;
}
public NetworkStream ConnectToVehicleAStream(ConnectToAStream conn)
{
return conn(AIp, APort); ;
}
}
public class BStreamManager
{
public IVehicle Vehicle { get; set; }
public string BIp { get; set; }
public int BPort { get; set; }
public delegate NetworkStream ConnectToBStream(string host, int port);
public BStreamManager(IVehicle vehicle, string IP, int Port)
{
Vehicle = vehicle;
BIp = IP;
BPort = Port;
}
public NetworkStream ConnectToVehicleBStream(ConnectToBStream conn)
{
return conn(BIp, BPort); ;
}