我使用VB.NET,但這個問題適用於任何OO語言 - Java,C#等。我用Java和C#標記了這個問題,但是如果認爲不合適,將會刪除。更新包裝對象的最佳方法
我有一個包含它的屬性之一ClassBBB
參考實體類ClassAAA
:
Public Class ClassAAA
Private Property _blah As ClassBBB = Nothing
Private Property _somethingElse As String
Private Property _anotherthing As String
' Make it private so cannot instantiate class without supplying ClassBBB '
Private Sub New()
End Sub
Public Sub New(ByRef value As ClassBBB)
_blah = value
End Sub
Public Property ImportantAttribute As String
Get
Return _blah.Imp
End Get
Set(ByVal value As String)
_blah.Imp = value
End Set
End Property
' other stuff '
End Class
我不希望暴露ClassBBB
實體類之外。這是我的問題:我想在ClassAAA
上進行更新,並且我想要使用ClassBBB
的靜態/共享更新方法。什麼是最好的方法來做到這一點?
Public Shared Sub UpdateClassAAA(byRef value as ClassAAA)
' XXX Cannot do this because ClassBBB reference is private XXX '
ClassBBBDAO.update(value._blah)
' Do other updates on other ClassAAA attributes '
End Sub
我可以使ClassBBB
參考公衆(或提供一個公共的getter方法),但那樣會暴露的ClassAAA
的內部運作。
我在做的是讓ClassBBB
參考Friend
,以便它只在組件中可見,即數據層,並且對客戶端項目不可見。但這仍然讓我覺得我正在揭露班級的內部運作。
有沒有更好的方法呢?
是的,你猜對了 - 我將不得不從共享/靜態CRUD方法轉移到實體類本身。 – CodeClimber 2012-04-26 08:35:32