私は、インターフェイスと基底クラスに多数のポストがあることを知っていますが、正しいデザインパターンを理解するのは苦労しています。インターフェイスと基底クラスの使用の理解
レポートクラスを作成する場合は、最初はすべてのレポートで実装されるコアプロパティ、メソッドなどのインターフェイスを作成することになります。例えば
:
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
Itemsを含むインターフェイスを実装しているだけで、それを使用する必要はありません。 – Xaisoft