데이터 액세스 객체로 둘러 쌓여 있고 다양한 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
지금, 내가 믹스에 제 2의 웹 서비스를 추가해야합니다. 목표는 현재 첫 번째 웹 서비스에서 가져온 프록시 개체를 사용하도록 코딩 된 UI 컨트롤을 다시 사용하는 것입니다. 약 10 개의 공통 속성과 약 20 개의 속성이 있습니다. 두 번째 웹 서비스를 추가하려면 동일한 인터페이스를 구현하는 두 번째 DAL 객체를 생성해야합니다. 문제는 현재 첫 번째 웹 서비스에서 프록시를 반환한다는 것입니다.
이 문제를 해결하는 방법에 대한 제 생각은 각 프록시 개체에서 인터페이스를 추출하여 함께 섞어 버리는 것입니다. 그런 다음 두 프록시 객체 모두에 새 인터페이스를 구현하십시오. 그러면 일부 속성이 사용되지 않는 거대한 클래스/인터페이스가 생성됩니다. 그런 다음 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