不同类实现的常用方法



我们正在开发一个具有数据库查找方法的应用程序,现在我的项目中的大多数或某些类都将使用这些查找方法。我不想创建一个接口,因为这会强制我的类实现接口中的所有方法。 所以基本上,我想要一个具有查找方法的类,这些查找方法将被我的大多数/某些方法常用。

例如 我有这些查找

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
}

等等..

如何实现这一点?我猜是一个抽象类,对吗

如果您不想拥有过多的接口,其中一个选项是在抽象基类上有一个默认实现:

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所提到的,这种方法需要大量的纪律和文档来了解每种情况下发生的事情。 在执行方面更安全和稍微危险一点的另一种方法是拥有一个默认实现,该实现什么都不做/返回这些方法的默认对象。它不会在运行时压碎您的应用程序,但会导致潜在的逻辑错误。

最新更新