Я знаю, что на интерфейсах и базовых классах есть несколько сообщений, но мне трудно найти правильное понимание дизайна.Понимание использования интерфейсов и базовых классов
Если бы я написал класс отчетности, моим первоначальным решением было бы создать интерфейс с основными свойствами, методами и т. Д., Которые будут реализованы всеми отчетами.
Например:
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
Моя мысль в том, что он должен быть интерфейс, потому что другие отчеты могут не использовать " Элементы ", таким образом я могу реализовать объекты, которые используются для данного класса отчета.
Я ушел? должен ли я еще создать базовый класс? Моя логика не создания базового класса заключалась в том, что не все классы отчетов могут использовать «Элементы», поэтому я не хотел их определять, где они не используются.
Можете ли вы объяснить причину реализации интерфейса здесь? Разве вы не думаете, что это дает память без необходимости. Я могу сделать это без интерфейса. Правильно? – Pankaj
Ваш вопрос немного запутанный для меня. Вы беспокоитесь об использовании большего количества отчетов, которые не используют 'Items'? Тем не менее, у вас есть то, что определено в вашем интерфейсе. В настоящее время любой класс, который вы хотите реализовать «IReport», должен будет предоставить свойство 'Items()' и функцию ItemTotalSales(). – Thomas
Просто потому, что вы реализуете интерфейс, содержащий элементы, не означает, что вам нужно его использовать. – Xaisoft