【发布时间】:2012-05-01 07:52:42
【问题描述】:
我知道有很多关于接口和基类的帖子,但我很难理解正确的设计模式。
如果我要编写一个报告类,我最初的想法是创建一个包含所有报告都将实现的核心属性、方法等的接口。
例如:
Public Interface IReportSales
Property Sales() As List(Of Sales)
Property ItemTotalSales() As Decimal
End Interface
Public Interface IReportProducts
Property Productss() As List(Of Inventory)
Property ProductsTotal() As Decimal
End Interface
然后我假设我会有一个类来实现接口:
Public Class MyReport
Implements IReportSales
Public Property Sales() As System.Collections.Generic.List(Of Decimal) Implements IReportItem.Sales
Get
Return Sales
End Get
Set(ByVal value As System.Collections.Generic.List(Of Decimal))
Items = value
End Set
End Property
Public Function ItemTotalSales() As Decimal Implements IReport.ItemTotalSales
Dim total As Decimal = 0.0
For Each item In Me.Sales
total = total + item
Next
End Function
End Class
我的想法是它应该是一个接口,因为其他报表可能不使用“项目”,这样我就可以实现用于给定报表类的对象。
我走了吗?我应该还刚刚创建了一个基类吗?我不创建基类的逻辑是,并非所有报表类都可以使用“项目”,所以我不想在不使用它们的地方定义它们。
【问题讨论】:
-
你能解释一下这里实现接口的原因吗?你不觉得,这是不必要的记忆。我可以在没有界面的情况下做到这一点。对吗?
-
你的问题让我有点困惑。您是否担心实施更多不使用
Items的报告?不过,您在界面中已将其定义为要求。就目前而言,您希望实现IReport的任何类都必须提供Items()属性和ItemTotalSales()函数。 -
仅仅因为你实现了一个包含Items的接口并不意味着你需要使用它。
-
@Guest:实现一个接口仅仅意味着你为它指定的任何 functions 或 properties 提供一个实现。实现占用的空间量取决于实现,而不是接口。
-
我想我的主要问题是这是使用界面的有效场景吗?
标签: asp.net vb.net interface base-class