没有接口的类

时间:2013-03-12 15:18:13

标签: vb.net design-patterns

我在这里已经阅读了几个问题,似乎普遍的共识是项目中的每个类都不需要接口。我看过这样的帖子:Is it the best practice to extract an interface for every class?

我想知道这是如何适用于.NET框架类的。我相信我所看到的所有类都要么继承自抽象类,例如SQLConnection继承自dbConnection或实现和接口,例如Component类实现了IComponent接口。

我有一份Reflector的副本,我在两个月前下载了,我正在等待许可证(最近支付了费用)。当我开始单步执行代码时(使用Reflector);我会看到这样的代码:

Public Class Foo
    Public Name As String
    Public Property NameProperty()
        Get
            Return Name
        End Get
        Set(value)
            Name = value
        End Set
    End Property

    Public Shared Sub Main()
        Dim f As Foo = New Foo
        f.NameProperty = "Ian"
    End Sub

End Class

而不是像这样的代码:

Public Class Foo
    Implements IFoo
    Public Name As String
    Public Property NameProperty() Implements IFoo.NameProperty
        Get
            Return Name
        End Get
        Set(value)
            Name = value
        End Set
    End Property

    Public Shared Sub Main()
        Dim f As IFoo = New Foo
        f.NameProperty = "Ian"
    End Sub

End Class

Public Interface IFoo
    Property NameProperty()
End Interface

请注意,第二个代码片段中使用了一个接口。我仍然在努力了解什么时候不适合使用接口。一些开发商说从不。我想其中一些是主观的。

1 个答案:

答案 0 :(得分:1)

作为一个努力以正确的方式做事的人,每次我开始一个新项目时,我都会为此付出努力。我逐渐意识到这主要是主观的;比如说“哪天可以不洗澡”。

当然它提供了抽象,提高了可测试性等,但它可能导致不必要的“类爆炸”。在我的经验中,向辅助内部类添加接口弊大于利。我偶尔会打开一个我多年前做过的小项目,我对无数的课程列表感到震惊......过度工程!

通常,我在类库中使用API​​接口。除此之外,如果时间允许,我会添加它们,或者我特别需要澄清客户端代码应该如何调用一段代码。