2016-10-18 126 views
4

考慮到從接口實現一束性質的以下兩類:最佳方式重構共同代碼

接口碼:

public interface ISample 
{ 
    int x; 
    string y; 
} 

第1類:

public class SampleA: ISample 
{ 
    public int x { get; set; } 
    public string y { get; set; } 
} 

2類:

public class SampleB: ISample 
{ 
    public int x { get; set; } 
    [Decorated] 
    public string y { get; set; } 
} 

這裏唯一的區別是SampleB有一個屬性裝飾的屬性。

這是高度簡化的,有問題的類有更多的屬性,但主要的差異是一個類有一些屬性裝飾屬性。

將來會出現一些情況,將會推出更多的類來實現接口ISample,並感覺這些類可能應該繼承一些可能來自抽象類或其他類的通用代碼。

什麼是重構此代碼的好方法?

+0

當我與DTOs(擁有很多屬性的類)一起工作時,我經常放鬆對DRY的承諾 - 重複屬性對於我來說不是一個問題,而是重複方法。 –

回答

5

嘗試這種解決方案:在Sample類中的所有屬性將virtual,如果你想與屬性來裝點他們中的一些在derrived類,只是override他們。

public class Sample 
{ 
    public virtual int x { get; set; } 
    public virtual string y { get; set; } 
} 

public class SampleA : Sample 
{ 
} 

public class SampleB : Sample 
{  
    [Decorated] 
    public override string y { get; set; } 
} 
相關問題