我有一个真正做作的例子,就是我的业务对象如何加载它们的数据。不过,我想阻止下面显示的情况。我知道这里有缺点,但它是如何(到目前为止)!我如何在不重构接口等的情况下实现这一目标?防止将继承的对象传递给共享函数
Public Class Car
Public Property Passengers As Integer
Public Shared Sub Fill(c As Car, r As SqlDataReader)
Passengers = r.GetInt32(0)
End Sub
End Class
Public Class UsedCar
Inherits Car
Public Property PreviousOwner As String
Public Shared Sub FillUsed(l As Limo, r As SqlDataReader)
Passengers = r.GetInt32(0)
PreviousOwner = r.GetString(1)
End Sub
End Class
Public Sub CreateVehicles()
Dim c As New Car()
Car.FillWithStuff(c, GetSqlReader(carId))
Dim l As New UsedCar()
UsedCar.FillUsed(l, GetSqlReader(usedCarId)) 'Great
Car.Fill(l, GetSqlReader(usedCarId)) 'No! << Stop this at once!
UsedCar.Fill(l, GetSqlReader(usedCarId)) '<<< Even more wrong!
End Sub
而'Limo.FillWithStuff'更糟...... – Tom
我有种感觉你是对的。该死的Liskov和他的校长!也许我的蛮力方法不是最大的,所以构图看起来像是目前最好的选择...... – Tom