我目前使用此代碼移動夾鉗:如何使用委託
Public Class ClampSet
Public Sub New(ByVal gripL As Single, ByVal gripR As Single, ByVal passAxis As Integer)
GripDistanceRight.DimMillimeters = gripL
GripDistanceLeft.DimMillimeters = gripR
Axis = passAxis
End Sub
Public GripDistanceRight As clsDimension = New clsDimension()
Public GripDistanceLeft As clsDimension = New clsDimension()
Public Axis As Integer
Public Sub moveClampIn()
If (Axis = 1) Then
digiouts.MoveLeftClampIn()
ElseIf Axis = 2 Then
digiouts.MoveMiddleClampIn()
ElseIf Axis = 3 Then
digiouts.MoveRightClampIn()
End If
End Sub
Public Sub moveClampOut()
If (Axis = 1) Then
digiouts.MoveLeftClampOut()
ElseIf Axis = 2 Then
digiouts.MoveMiddleClampOut()
ElseIf Axis = 3 Then
digiouts.MoveRightClampOut()
End If
End Sub
End Class
我想詳細瞭解面向對象編程,我無法理解的代表。
我想我可以將一個委託作爲參數傳遞給一個move()函數,以便這個類可以提供指定哪個方法(即MoveLeftClampOut())的選項,當我初始化ClampSet目的。
我認爲這將是一個更好的解決方案,因爲我不知道將來我會有多少種不同的clampMove方法,並希望使我的代碼更加靈活。
如果我可以使用委託來更改由move()上的ClampSet對象執行的方法,那麼我的代碼應該如何實現?
P.S.我必須使用別人類提供給我的方法。 (MoveLeftClampIn(),MoveLeftClampOut()等)。
閱讀魔術數字反模式,而你越來越擅長面向對象,壞習慣開始做。 :) – Cortright
@Cortright正是我問這個問題的原因:)我知道它不好,我想做得更好 – jth41
問題是,你*想*你需要代碼在這段代碼中。你不這樣做,他們絕對沒有用處。繼續寫代碼,你會發現他們明顯的需求。就像有一天你會認爲提高事件是有用的。 –