2017-08-02 97 views
-1
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); ; 
    } 

}重构代码具有基类只有共同

我有两个类AStreamManagerBStreamManager的部件。正如你在上面看到的,有一个类型为IVehicle的成员变量Vehicle,这在这些类中很常见。 它是否有意义,我能否以'IVehicle Vehicle`移动到基类来重构?

+0

这些类是相同的。你为什么有两个?你可以将它们“重构”为一个StreamManager类,然后为AStream和BStream另外实例化一个? 'var aStream = new StreamManager(); var bStream = new StreamManager;' –

+0

您的问题的答案是肯定的,您可以将Vehicle移动到基类。还要别的吗? –

回答

2

这个问题对我来说似乎是非常假设的。看看你的课堂,我根本看不出他们存在的理由。你有AIpBIp但这些都是明确的IP地址,所以它有两个不同的属性是没有意义的。我只需要一个StreamManager类,就是这样。