委托(deldgate)最大的用处是不是在多线程的处理?

millercn 2007-12-04 11:37:13
RT,当然不算委托用在“事件”处理方面的作用。在我来看,如果在单线程的情况下,使用委托最大的作用就是回调(方便使相同的方法返回到不同的位置)。可是这个功能也可以使用其他方法轻松实现。所以在一般情况下,委托是不是没什么作用?

以下的代码是实现单击按钮后内容在不同textbox里面出现,但是使用了委托就更麻烦了,可读性也差。

例如:
Public Class Form1

'在注释中的这些代码可以很简单的实现目标。
'Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button2.Click, Button1.Click
' Dim test As New TestDeleg

' Dim button As Button = CType(sender, Button)

' If button.Name Is "Button1" Then
' TextBox1.Text = Label1.Text
' Else
' TextBox2.Text = Label1.Text
' End If

'End Sub



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button1.Click
Dim test As New TestDeleg
test.Display(label1.Text,addressof WriteT1)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button2.Click
Dim test As New TestDeleg
test.Display (label1.Text ,addressof writeT2)
End Sub

Private Sub WriteT1(ByVal str As String)
TextBox1.Text = str
End Sub

Private Sub WriteT2(ByVal str As String)
TextBox2.Text = str

End Sub
End Class


Friend Class TestDeleg

Public Delegate Sub delegSUB(ByVal str As String)

Public Sub Display(ByVal str As String, ByVal deleg2 As delegSUB)
deleg2(str)
End Sub

End Class
...全文
44 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
husheng03 2007-12-05
说白了,最好用在 异步 调用,

可以解除调用者和被调用者之间的藕和.
回复
millercn 2007-12-05
看了一篇“观察者模式”的文章:http://www.jdon.com/designpatterns/observer.htm

那么委托的“观察者模式”功能也就是事件的Event和RaiseEvent,可以这样理解吗?
回复
kaishui_gu 2007-12-04
“观察者模式”中的应用仅仅委代的另一个应用场景,而委代有更大的应用场景和含义,说的抽象点是面向接口编程
回复
kaishui_gu 2007-12-04
可读性差是因为你不习惯而已
回复
kaishui_gu 2007-12-04
建议楼主去看看“观察者模式”就什么都明白拉
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告