說我有一個類中有幾個方法。我想將這些方法組織到可以訪問的分組中,而不必每次都創建一個新對象。目的是組類的方法爲邏輯桶組織VB.Net Mehods
例如:
Dim myclass as MyCustomClass
myclass.Shipping.Get_List()
myclass.Production.Get_List()
什麼是做到這一點的最好方法是什麼?我嘗試嵌套類,但VB.NET不會讓我訪問如上所示的方法。
說我有一個類中有幾個方法。我想將這些方法組織到可以訪問的分組中,而不必每次都創建一個新對象。目的是組類的方法爲邏輯桶組織VB.Net Mehods
例如:
Dim myclass as MyCustomClass
myclass.Shipping.Get_List()
myclass.Production.Get_List()
什麼是做到這一點的最好方法是什麼?我嘗試嵌套類,但VB.NET不會讓我訪問如上所示的方法。
所以這是我怎麼會做你想做
什麼這是不是世界上最好的設計,但它的工作
我建議你移動的實際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
謝謝。我認爲這是我正在尋找的方法。這種方法的原因是我需要一個接口點,其他人將與之交互。他們無法看到底層結構,所有「航運」,「生產」等小節都必須共存。由於這些原因,讓我的用戶實例有幾個不同的類別是沒有意義的。您的方法很有意義,因爲它在後臺執行此操作,並且仍然爲最終用戶提供單個界面的外觀。 – ElPresidente
小心注意,你更可能應該重新評估你的架構,你可以實現你的模式是這樣的:
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
請記住,有些人認爲難以閱讀。我個人比較喜歡組織,所以當這些方法按照字母順序排序時,他們在邏輯上進行分組。
我發現我一直在尋找解決方案的使用接口
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
您可以用嵌套類這樣做,如果父類有一個(可能是'Shared')該類作爲一個實例公衆成員。儘管如此,說實話,這聽起來並不是一個好主意。這非常非常規且不直觀,這使得代碼更難以支持。如果你試圖找到一種方法來直觀地將你的類中的方法分組,那麼這聽起來像這個類需要重新分解成多個類。 – David
我在寫你的評論時,實際上已經澄清了這個例子。目的是影響子類別的方法有不同的組合。例如「航運」對這一類別有很多方法。我原本打算將它們分成不同的類別,但有重疊和一些他們都依賴的共同變量。將它作爲一個結構看起來更直觀,因爲它們都與相同的基礎數據相連接。 – ElPresidente
「重疊和一些常見變量」聽起來像是多個多態類的情況,而不是一個試圖迎合所有事情的大類。此外,類的結構不一定必須與底層數據的結構相匹配。情況往往如此,但兩者不應緊密相連。面向對象類與關係數據的本質有着相同概念表示方式的不同。對代碼一無所知,我只能推薦閱讀設計模式和麪向對象的設計。 – David