2017-08-02 94 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類,就是這樣。