C# 更新包装对象的最佳方法
我正在使用VB.NET,但这个问题适用于任何OO语言——Java、C等。我已经用Java和C标记了这个问题,但如果认为不合适,将删除它 我有一个实体类C# 更新包装对象的最佳方法,c#,java,vb.net,oop,design-patterns,C#,Java,Vb.net,Oop,Design Patterns,我正在使用VB.NET,但这个问题适用于任何OO语言——Java、C等。我已经用Java和C标记了这个问题,但如果认为不合适,将删除它 我有一个实体类ClassAAA,其中包含对ClassBBB的引用,作为其属性之一: Public Class ClassAAA Private Property _blah As ClassBBB = Nothing Private Property _somethingElse As String Private Property _
ClassAAA
,其中包含对ClassBBB
的引用,作为其属性之一:
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
referenceFriend
只在程序集(即数据层)中可见,而对客户端项目不可见。但这仍然让我觉得我在揭露这个类的内部工作
有更好的方法吗?我认为您只需要为ClassBBB成员创建一个getter,或者将更新方法创建为类方法而不是静态的我认为您只需要为ClassBBB成员创建一个getter,或者将更新方法创建为类方法而不是静态的我认为,简单的想法是在
ClassAAA
中创建一个公共更新方法,并让其他类根据需要调用它。通过这种方式,您不会公开ClassAAA
的内部细节,而是可以让其他人激活所需的功能。我认为,简单的想法是在ClassAAA
内部创建一个公共更新方法,并让其他类根据需要调用它。通过这种方式,您不会公开ClassAAA
的内部细节,而是可以让其他人激活所需的功能。如果ClassAAA
隐藏并封装ClassBBB
,那么ClassAAA
应该有一个公共方法来内部更新ClassBBB
。设计模式是一个很好的例子,它以一种优美的方式说明了问题的解决方案。如果ClassAAA
隐藏并封装ClassBBB
,那么ClassAAA
应该有一个公共方法来内部更新ClassBBB
。设计模式是一个很好的例子,它以一种优美的方式说明了问题的解决方案。是的,我想你是对的-我将不得不离开共享/静态CRUD方法,将它们转移到实体类中。是的,我想你是对的——我将不得不离开共享/静态CRUD方法,将它们转移到实体类本身。