我们正在开发一个对数据库具有查找方法的应用程序,现在我项目中的大多数或某些类都将使用这些查找方法。我不想创建一个接口,因为这将迫使我的类在接口中实现所有方法。 因此,基本上,我想要一个具有查找方法的类,该方法将在我的大多数/某些方法中普遍使用。
例如 我有这些查询
class lookup
{
public bool getId();
public bool getName();
public bool getDescription();
}
我可能有只实现这些方法之一或不实现的方法
Class A
{
public bool getId()
{
do some work
}
}
class B
{
public bool getName()
{
do some work
}
}
class C
{
implements none of the methods
}
以此类推。
如何实现?我猜是一个抽象类,对吗
答案 0 :(得分:1)
如果您不想拥有过多的接口,则其中一种选择是在抽象基类上具有默认实现:
public abstract class LookupBase
{
public virtual bool getId()
{
throw new NotImplementedException();
}
public virtual bool getName();
{
throw new NotImplementedException();
}
public virtual bool getDescription();
{
throw new NotImplementedException();
}
}
在您的具体实现中,只会覆盖您需要的内容:
public class LookupA: LookupBase
{
public override bool getId()
{
//do some work
}
}
如果像我的示例那样抛出异常,则在运行时中很明显未实现某些操作。但是,这只会在运行时发生,而不会在编译时发生。正如@Bagus Tesa提到的那样,此方法将需要大量的纪律和文档来了解每种情况下发生的情况。 就执行和更危险的方法而言,另一种更为安全的方法是拥有一个不执行任何操作/返回这些方法的默认对象的默认实现。它不会在运行时破坏您的应用程序,但会导致潜在的逻辑错误。