0
我有一個web服務被數據訪問對象封裝並被許多不同的UI控件訪問。代理對象上的基類
代理對象是這個樣子:
Public Class WebProxyObject1
' Common properties, there are about 10 of these
Public Name As String
Public Address As String
' Specialized properties there are about 20 of these
Public count As Integer
End Class
的DAL層是這個樣子:
Public Class DataAccessObject
Implements IDataAccessObject
' These are called in MANY, MANY, MANY locations
Public Function GetObject(ByVal name As String) As WebProxyObject1 Implements IDataAccessObject.GetObject
' Makes call to a webservice
Return New WebProxyObject1
End Function
Public Function ListObjects() As System.Collections.Generic.List(Of WebProxyObject1) Implements IDataAccessObject.ListObjects
' Makes call to a webservice
Dim list As New List(Of WebProxyObject1)
Return list
End Function
End Class
現在,我需要一個webservice的第2次加進來。目標是重用當前編碼的UI控件以使用來自第一個Web服務的代理對象。大約有10種共同特性和大約20種不同的特性。要添加第二個Web服務,我會創建一個實現相同接口的第二個DAL對象。問題是它目前從第一個webservice返回代理。
我想如何解決這個問題是從每個代理對象中提取一個接口並將它們混合在一起。然後在兩個代理對象上實現新的接口。這將創建一個巨大的類/接口,其中不使用某些屬性。然後讓DAL返回界面。
我面對的問題不是真正的錯誤或問題,但提取2個接口並將它們粉碎在一起只是感覺有點錯誤。我認爲它在技術上會起作用,但它有些異味。有更好的主意嗎?
生成的接口應該是這樣的:
Public Interface IProxyObject
' Common
Property Name() As String
Property Address() As String
' Specialized
Property Count() As Integer
Property Foo() As Integer
End Interface