0

在我的程序中,我定义了几个接口,如IInterface1、IInterface2、IInterface3、IInterface4、IInterface5,如果我需要在一个具体类中实现所有五个接口,你是否直接实现这些接口,如下所示

public class EntityClass: IInterface1,IInterface2, *** IInterface5
{
}

还是您会先创建一个从这些接口继承的接口,然后再实现该接口?

public interface IEntity: IInterface1,IInterface2, *** IInterface5
{
}

public class EntityClass:IEntity
{
}
4

3 回答 3

4

接口的继承表示“is-a”关系。如果 IEntity 的每个实现也必须是 IInterface1,您将从 IInterface1 继承 IEntity。

是:公共接口 IPanda:IBear

可能不是:公共接口 IAccountant :IObsessiveCompulsiveDisorder

于 2013-09-30T00:26:09.517 回答
2

这取决于您的用例。

如果你IEntity总是包含其他接口,那么让它实现其他接口会容易得多。

如果不是这种情况,您将不得不以一种没有类必须实现它不需要的方法的方式抽象它,同时还需要尽可能少的实现。

话虽这么说:如果您只将它用于一两个类,您也可以使用接口列表,而不是将它们分组到中间接口中。

于 2013-09-30T00:28:01.423 回答
1

在良好实践的背景下,这两种方法都是有效的。但是,这完全取决于您的设计。我发现处理继承的最好方法是尝试和你正在继承的内容进行对话,并确保它有意义。

例如,“每个 EntityClass 都是 IEntity 吗?”,这可能是真的。但是,询问“是否每个 EnetityClass 都是一个接口 1,以及一个接口 2 等等”,这对于某些实例可能是正确的,而对于其他实例则不是,但所有实例都是在 IEntity 上实现的。

将许多接口实现聚合到一个接口中的问题可能是,当您在本身具有许多接口的接口之外实现更多类时,实现只需要几个接口,在这种情况下,您需要重新设计以确保继承树有意义。

于 2013-09-30T01:47:10.180 回答