0

その中にいくつかのメソッドを持つクラスがあるとします。毎回新しいオブジェクトを構築せずにアクセスできるグループにメソッドを整理したいと考えています。目的は、クラスのメソッドを論理バケットにグループ化することです

例えば:

Dim myclass as MyCustomClass
myclass.Shipping.Get_List()
myclass.Production.Get_List()

これを行う最善の方法は何ですか?ネストされたクラスを試しましたが、VB.NET では上記のメソッドにアクセスできません。

4

3 に答える 3

0

アーキテクチャを再評価する必要がある可能性が高いことに注意して、次のようにパターンを実装できます。

Public Class MyCustomClass
    Private _shippingList As List(Of String)
    Private _productionList As List(Of String)

    Public Production As ProductionClass
    Public Shipping As ShippingClass

    Public Sub New()
        Production = New ProductionClass(Me)
        Shipping = New ShippingClass(Me)
    End Sub

    Public Class ShippingClass
        Private _owner As MyCustomClass

        Public Sub New(owner As MyCustomClass)
            _owner = owner
        End Sub

        Public Function Get_List()
            Return _owner._productionList
        End Function
    End Class

    Public Class ProductionClass
        Private _owner As MyCustomClass

        Public Sub New(owner As MyCustomClass)
            _owner = owner
        End Sub

        Public Function Get_List()
            Return _owner._productionList
        End Function
    End Class

End Class

ただし、真の意図が単にメソッドをよりアクセスしやすく論理的な方法で整理することである場合は、次のことを検討することをお勧めします。

Public Class MyCustomClass
    Public Sub ShippingListGet()
    End Sub

    Public Sub ShippingListAddTo()
    End Sub

    Public Sub ShippingThatDO()
    End Sub

    Public Sub ShippingThisDo()
    End Sub

    Public Sub ProductionListGet()
    End Sub

    Public Sub ProductionListAddTo()
    End Sub

    Public Sub ProductionThisDo()
    End Sub

    Public Sub ProductionThatDo()
    End Sub
End Class

読みにくいと思う人もいますので注意してください。個人的には、これらの線に沿って編成することを好みます。そのため、メソッドをアルファベット順に並べ替えると、論理的にグループ化されます。

于 2012-06-13T04:23:53.887 に答える
0

インターフェイスを使用して探していたソリューションを見つけました

Public Interface ICompany
    Function Company_List() As DataTable
End Interface

Public Class MainClass
    Public Company As ICompany = New CompanyClass

    Public Sub New()
        MyBase.New()
    End Sub

    Private Class CompanyClass
        Public Sub New()
            MyBase.New()
        End Sub

        Public Function Company_List() As DataTable
              My code....
        End Function
End Class
End Class
于 2012-06-13T18:49:21.527 に答える
0

だからこれは私があなたが望むことをする方法です

これは世界最高のデザインではありませんが、うまくいくでしょう

実際の get_list と他の種類のメソッド/プロパティを特定のクラスに移動し、共通のものを親クラスに保持することをお勧めします。この場合はテストです

しかし、その後、あなたのコードがどのように見えるかはわかりません。その時点から、それはあなたの選択です

Module Module1

    Sub Main()
        Dim test As New test
        test.Production.Get_List()
        test.Shipping.Get_List()
    End Sub

End Module


Public Class Shipping
    Private parent As test

    Public Sub New(ByRef parent As test)
        Me.parent = parent
    End Sub

    Public Function Get_List() As List(Of Integer)
        Return parent.GetShipping_List
    End Function
End Class

Public Class Production
    Private parent As test

    Public Sub New(ByRef parent As test)
        Me.parent = parent
    End Sub

    Public Function Get_List() As List(Of Integer)
        Return parent.GetProduction_List
    End Function
End Class

Public Class test
    Public Property Production As Production
    Public Property Shipping As Shipping


    Public Function GetShipping_List() As List(Of Integer)
        Return Nothing
    End Function

    Public Function GetProduction_List() As List(Of Integer)
        Return Nothing
    End Function

    Public Sub New()
        Production = New Production(Me)
        Shipping = New Shipping(Me)
    End Sub
End Class
于 2012-06-13T03:16:32.030 に答える