实现派生接口的基本成员

时间:2013-09-01 01:28:11

标签: .net vb.net interface coding-style

假设我有以下界面:

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

我的理由是,通过显式指定基接口并在定义它们的级别声明类成员,代码更清晰,如果派生接口曾经被重构,删除或替换,那么需要完成的重构是严格限制的。但是这种方法我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

通过实施IFooBaseIFoo,您将隐含地向任何人(其他人)审核IFoo未从IFooBase继承的代码,尽管即使从IFoo继承IFooBase也不正确。

但是,如果将IFoo更改为也从其他接口继承,IBar(接口可以有多个继承,但不是类),则隐式要求FooClass也要实现IBar,即使FooClass不需要额外的Implements IBar

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

我相信只有实现最派生的接口,而不是所有的父接口,才能说些什么。