2016-12-03 134 views
0

我有一個項目,我用Coefirst。 在我的項目中,我想實現SoftDelete有兩種方法。抽象類或SoftDelete接口

1:用戶接口一樣belowe:

public interface ISoftDelete 
{ 
    bool IsDeleted { get; set; } 
} 

如果我用這種方式,我要實現我想要softDelete所有類。

第二:使用抽象類像belowe:

public abstract class SoftDelete 
{ 
    public bool IsDelelted { get; set; } 
} 

我不知道哪一個更好,有在網絡上沒有類似的問題。

+0

的可能的複製[接口或抽象類?(http://stackoverflow.com/questions/1165332/interface-or-abstract-class ) –

回答

0

接口是一個數據傳遞契約,你沒有任何實現,但抽象類可以有默認的實現。 如果你想在你的基類(這裏是SoftDelete)中實現,你必須使用抽象類。

0
  1. 保持它很好很簡單,你不需要任何特殊的處理IsDeleted對象。

  2. 您將需要處理數據庫中的繼承,這意味着實際上每種類型繼承的表。對於這種方法,我建議不要這樣做,因爲這會使查詢和遷移變得複雜,並可能導致性能問題。

所以我會說1更好,即使它需要代碼中的重複,它可能會爲你節省一些數據庫中的麻煩。

0

根據MSDN

如果要創建的功能將在很寬的範圍內不同的物體是有用的,使用的接口。抽象類應主要用於密切相關的對象,而接口最適合爲無關類提供通用功能。

我想接口是更好的選擇

Recommendations for Abstract Classes vs. Interfaces