2015-12-24 75 views
1

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

它没有任何逻辑。当我扩展Logger时,我简单地覆盖trace和isTraceEnabled。

我无法摆脱困境。实施方法的目的是什么?它们什么都不做,只是返回他们期望的具体价值?

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

我会要求他们提供一个具体的类作为预期如何使用它的例子。 – itsme86

回答

4

他们给你这样的一个接口,这意味着两件事情之一:

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

我相信这是他的第一点。我扩展了记录器并实现了每个抽象方法。我的方法没有做任何事情,因为我不知道他们应该做什么。跟踪方法可以打印任何我不想要的东西。也许他们希望我只知道输出应该是什么? – Roo

+0

@DavidLeverett如果他们期望你做DB日志记录,那么你的实现应该做DB日志记录,而不是打印任何东西。 – dasblinkenlight

+0

我会推测他们期待你控制跟踪和存储日志记录。我猜他们要求你在某处提供一个Logger子类的实例?他们可能会检查isTraceEnabled属性是否为true,如果是,则调用trace()方法,并在其中记录某些信息。 – MutantNinjaCodeMonkey