Vb.net 使用类(复杂属性)这种变通方法/体系结构/方法正确吗?
我对使用OOP有点困惑,我的意思是,我已经知道(或者我猜)什么是类,什么是对象,什么是方法,什么是属性等等,但是我有这个疑问: 让我们假设我有一个类“洗衣房”,这个类有(仅此示例)3个属性:Vb.net 使用类(复杂属性)这种变通方法/体系结构/方法正确吗?,vb.net,oop,class,architecture,Vb.net,Oop,Class,Architecture,我对使用OOP有点困惑,我的意思是,我已经知道(或者我猜)什么是类,什么是对象,什么是方法,什么是属性等等,但是我有这个疑问: 让我们假设我有一个类“洗衣房”,这个类有(仅此示例)3个属性: 洗衣店 名字 垫圈 Id和名称是“基本”类型或简单类型(整数和字符串),但垫圈表示类型为“垫圈”的对象列表,具有3个属性: 洗衣机 洗衣店 容量 烙印 所有这些(在本例中)都是简单/基本类型(整数、字符串、字符串) 所以这是我的困境,有这样一个构造函数是正确的(VB.net) 在该构造函数中,使用id=la
注意:我熟悉VB.net、C#、PHP,所以如果您喜欢解释/帮助我使用示例及其语法,那没关系。您的构造函数很好。你基本上是说,如果你有一个ID号,你只能创建一个洗衣类,在这种情况下,如果laundryID不是一个有效的ID号,你可能会抛出一个异常 我通常将类似于垫圈列表的内容公开为(垫圈的)IEnumerable,因此我的类的使用者自己无法控制该列表 这是一个简单的例子:
Public Class Laundry
Private _LaundryID As Integer
Private _LaundryName As String
Private _Washers As List(Of Washers)
Public Sub New(ByVal laundryID As Integer)
_LaundryID = laundryID
_Washers = New List(Of Washers)
'// populate washers
'// throw exception if something went wrong
End Sub
'// Properties
Public ReadOnly Property Washers As IEnumerable(Of Washer)
Get
Return _Washers
End Get
End Property
End Class
如何创建新的洗衣房对象取决于您。它可能只是一个空构造函数,或者是一个共享函数,用于从数据库(或任何地方)返回一个带有预填充ID号的新洗衣房对象。您的构造函数很好。你基本上是说,如果你有一个ID号,你只能创建一个洗衣类,在这种情况下,如果laundryID不是一个有效的ID号,你可能会抛出一个异常 我通常将类似于垫圈列表的内容公开为(垫圈的)IEnumerable,因此我的类的使用者自己无法控制该列表 这是一个简单的例子:
Public Class Laundry
Private _LaundryID As Integer
Private _LaundryName As String
Private _Washers As List(Of Washers)
Public Sub New(ByVal laundryID As Integer)
_LaundryID = laundryID
_Washers = New List(Of Washers)
'// populate washers
'// throw exception if something went wrong
End Sub
'// Properties
Public ReadOnly Property Washers As IEnumerable(Of Washer)
Get
Return _Washers
End Get
End Property
End Class
如何创建新的洗衣房对象取决于您。它可能只是一个空构造函数,也可能是一个共享函数,用于从数据库(或任何地方)返回一个带有预填充ID号的新洗衣房对象。在OOP世界中,您有许多选项,我在这里包括两个选项:
Public Class Laundry
Private _laundryId As Integer
Private _name As String
Private _washers As List(Of Washer)
Public Sub New(ByVal LaundryId As Integer)
_laundryId = LaundryId
' option one - load them when the Laundry class loads
LoadWashers()
End Sub
Public ReadOnly Property Washers As List(Of Washer)
Get
If _washers Is Nothing Then
' option two - load them the first time the washers properties are referenced
LoadWashers()
End If
Return _washers
End Get
End Property
Private Sub LoadWashers()
_washers = New List(Of Washer)
' load the washers here
'...
'...
End Sub
End Class
在OOP世界中,您有很多选择,我在这里包括两个:
Public Class Laundry
Private _laundryId As Integer
Private _name As String
Private _washers As List(Of Washer)
Public Sub New(ByVal LaundryId As Integer)
_laundryId = LaundryId
' option one - load them when the Laundry class loads
LoadWashers()
End Sub
Public ReadOnly Property Washers As List(Of Washer)
Get
If _washers Is Nothing Then
' option two - load them the first time the washers properties are referenced
LoadWashers()
End If
Return _washers
End Get
End Property
Private Sub LoadWashers()
_washers = New List(Of Washer)
' load the washers here
'...
'...
End Sub
End Class