我在这里已经阅读了几个问题,似乎普遍的共识是项目中的每个类都不需要接口。我看过这样的帖子: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
请注意,第二个代码片段中使用了一个接口。我仍然在努力了解什么时候不适合使用接口。一些开发商说从不。我想其中一些是主观的。
答案 0 :(得分:1)
作为一个努力以正确的方式做事的人,每次我开始一个新项目时,我都会为此付出努力。我逐渐意识到这主要是主观的;比如说“哪天可以不洗澡”。
当然它提供了抽象,提高了可测试性等,但它可能导致不必要的“类爆炸”。在我的经验中,向辅助内部类添加接口弊大于利。我偶尔会打开一个我多年前做过的小项目,我对无数的课程列表感到震惊......过度工程!
通常,我在类库中使用API接口。除此之外,如果时间允许,我会添加它们,或者我特别需要澄清客户端代码应该如何调用一段代码。