1

假设我有以下接口:

Public Interface IFooBase
    Sub Bar()
End Interface

Public Interface IFoo
    Inherits IFooBase

    Sub Zim()
End Interface

我了解IFoo隐式实现的类实现IFooBase,并且所有 IFooBase 成员都可以通过派生接口(例如Public Sub Bar() Implements IFoo.Bar)指定而没有问题,并且如果类指定它同时实现基接口和派生接口,则不会给出错误。

那么这里的最佳实践是什么?我的直觉是该类应该实现如下:

Public Class FooClass
    Implements IFooBase, IFoo

    Public Sub Bar() Implements IFooBase.Bar
    End Sub

    Public Sub Zim() Implements IFoo.Zim
    End Sub
End Class

我的推理是,通过显式指定基接口并在定义它们的级别声明类成员,代码更加清晰,如果派生接口要重构、删除或替换,需要的重构量要做的事情受到严格限制。但是我用这种方法遗漏了什么吗?

4

1 回答 1

2

通过同时实现IFooBaseand IFoo,您将隐含地向任何人(其他人)说明IFoo不继承自的代码IFooBase,尽管即使IFoo继承自也同时实现这两个代码IFooBase是不正确的。

但是,应该IFoo更改为也从另一个接口继承,IBar(接口可以有多个继承,但不能有类),你会隐含地要求FooClass也实现IBar,即使FooClass不应该需要额外的Implements IBar.

此外,如果您更改基本接口,如果您的实现类显式实现它,而不是隐式实现它,那么您会使事情变得更加复杂。

我相信只实现最派生的接口,而不是所有的父接口。

于 2013-09-03T02:46:01.477 回答