VB.NET .NET 3.5
我有一个名为Package的聚合类作为运输系统的一部分。包中包含另一个类BoxType。 BoxType包含有关用于运送包裹的盒子的信息,例如Box的长度,宽度等。
Package有一个名为GetShippingRates的方法。此方法调用单独的帮助程序类ShipRater,并将Package本身作为参数传递。 ShipRater检查Package和BoxType,并返回可能的运费/方法列表。
我想要做的是构建一个接口,IRateable,它将提供给辅助类ShipRater。所以而不是:
Class ShipRater
Sub New(SomePackage as Package)
End Sub
End Class
我们会这样做:
Class ShipRater
Sub New(SomeThingRateable as IRateable)
End Sub
End Class
但是,ShipRater需要来自Package及其聚合BoxType的信息。如果我编写一个接口IRateable,那么我如何使用BoxType属性来实现接口的一部分?这可能吗?
答案 0 :(得分:2)
接口不需要知道如何聚合调用(可以假设并非所有Rateable项都需要聚合调用)。将聚合(通过委托)调用保留为Package
:
Public Interface IRateable
Function GetRate() As Double
End Interface
Public Class Package Implements IRateable
Dim _boxType As New BoxType()
'Rest of implementation'
Public Function GetRate() As Double Implements IRateable.GetRate
Return _boxType.Rate()
End Function
End Class
答案 1 :(得分:0)
不确定。只需将所需的调用委托给汇总的BoxType
即可。抱歉C#:
class Package : IRateable
{
private float weight;
private BoxType box;
Size IRateable.Dimensions
{
get { return box.Dimensions; }
}
float IRateable.Weight
{
get { return weight; }
}
}