为什么在接口中有抽象类和抽象变量/方法?

时间:2015-12-24 19:35:32

标签: c# asp.net interface abstract-class

我从另一个团队获得了一个接口,以包含在我的数据库日志记录代码中。接口只填充抽象类和变量/方法。这样做的原因是什么?

它没有任何逻辑。当我扩展Logger时,我只是覆盖了trace和isTraceEnabled。

我无法理解它。实现方法除了返回他们期望的特定值之外什么都不做,有什么意义呢?

public abstract class Logger {
    public abstract void trace(String message);
    public abstract bool isTraceEnabled { get; }
}

1 个答案:

答案 0 :(得分:4)

他们给你一个这样的界面时,它意味着两件事之一:

  • 如果他们正在请求从您的库中进行日志记录,而您的库负责执行数据库日志记录,那么您需要定义一个扩展的类 Logger ,并提供每种抽象方法的实现。
  • 如果正在使用Logger执行其库提供给您的日志记录,那么它们应该为您提供一种获取实例的方法扩展抽象Logger类的类。在这种情况下,您根本不应该扩展该类:您应该预先获取它的实例,将其存储在Logger类型的变量中,并编程到其接口。