更新包装对象的最佳方法

本文关键字:最佳 方法 对象 包装 更新 | 更新日期: 2023-09-27 18:32:16

我正在使用 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 _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引用(或提供公共获取方法),但这会暴露ClassAAA的内部工作原理。

我想做的是使ClassBBB引用Friend,以便它仅在程序集(即数据层)中可见,对客户端项目不可见。但这张剧照感觉就像我在暴露课堂的内部运作。

有没有更好的方法?

更新包装对象的最佳方法

我认为

,简单的想法是在ClassAAA内部创建一个公共更新方法,并让其他类按需调用它。这样你就不会暴露ClassAAA的内部细节,而是让其他人可以激活所需的功能。

如果一个ClassAAA隐藏并封装ClassBBB那么ClassAAA应该有一个公共方法来内部更新ClassBBB。立面设计模式是一个很好的例子,它以一种漂亮而优雅的方式说明了问题的解决方案。

我认为您只需要为 ClassBBB 成员制作一个 getter 或使更新方法成为类方法而不是静态方法