使用Publish/Subscribe 设计模式达到对象间数据同步(二)

原创 2004年04月18日 23:57:00

在注册处理期间,subscriber被分配一个独特的标记,用来在event channel中标识subscriberevent channel也使用这个标记索引那些subscriber 虽然样品应用作为标记目标的杂乱脉冲干扰电码使用,我推荐在你的自己的程序里使用另一个方法产生一个独特的标识符 ( 例如产生一GUID) <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

使用目录菜单建立34frmList窗口实例。使用新的目录菜单选项创作frmList 3 或者4 个实例,然后在其中一个窗口中选择一个条目,双击这个条目进入可编辑模式,键入一个新的名字。窗体建立一个描述数据更新的事件并通过event channel发送。

Private Sub lvwList_AfterLabelEdit(ByVal sender As _ Object,
 ByVal e As _ System.Windows.Forms.LabelEditEventArgs) _

Handles lvwList.AfterLabelEdit

  Dim objEvent As clsDataEvent

  If e.Label <> "" Then

    objEvent = New clsDataEvent()

    With objEvent

      .Name = "NameChanged"

      .Value = e.Label

      .ExtraData = lvwList.Items(e.Item).Tag

      .Origin = Me

    End With

    MyBase.EventChannel.PublishEvent(objEvent)

  End If

End Sub

发送事件的窗体证实它是事件的创始人;并将clsDataEvent类的Origin属性设置为它自己。这样可以阻挡其他多余的事件,以确保发送者接收到的事件都是已经发布过的。最后,事件的发布者注意到了数据的改变。

所有的subscribers将收到事件。在EventApp 中,每个frmList 的实例将收到事件并且改变每个ListView中的发生变化的项目:

Public Overrides Sub EventRaise( _ ByVal  NewEvent As _

  EventApp.clsEvent)

  Dim objListItem As ListViewItem

 

  Select Case NewEvent.Name

    Case "NameChanged"

      For Each objListItem In lvwList.Items

        If objListItem.Tag = NewEvent.ExtraData Then

          objListItem.Text = NewEvent.Value

        End If

      Next

    Case Else

      'Handle other events

  End Select

End Sub

 

       这种事件系统类型将给你带来很大的灵活性。你可以使在应用程序中的任何一个
对象发布事件,只有那些对此感兴趣的对象的到更新的信息。也可以改变Event 
Channel类的实现方式, 如可以通过使用Web service或者消息系统(MS 
Message Queue  IBM MQ 系列),通过 HTTP协发送事件。

 

 

使用Publish/Subscribe 设计模式达到对象间数据同步

使用Publish/Subscribe 设计模式达到对象间数据同步 应用程序经常需要更改和交换数据,必须传送这些更改后数据以达到对象的同步,尤其在多窗口用户界面应用程序中更要求这种数据的同步协调,在这...
  • guoyan19811021
  • guoyan19811021
  • 2004年04月18日 23:57
  • 939

[设计模式] 观察者模式(发布-订阅/Publish-subscribe模式)

主要对像: 1、抽象的观察者/Watcher/Observer 以及具体实现 2、抽象的被观察者/Subject/Observable 以及具体实现 (1)目标和观察者之间的关系       ...
  • xuchuangfeng
  • xuchuangfeng
  • 2016年02月29日 18:33
  • 5389

设计模式---订阅发布模式(Subscribe/Publish)

转载自:http://blog.csdn.net/tjvictor/article/details/5223309 订阅发布模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象...
  • u012377333
  • u012377333
  • 2015年04月10日 13:58
  • 3553

redis之发布与订阅(publish/subscribe模式)

发布与订阅(publish/subscribe)模式,简称为pub/sub模式,redis也实现了这种模式。redis提供的发布订阅命令 命令 用例和描述 subscribe subsc...
  • u011499747
  • u011499747
  • 2016年04月24日 12:30
  • 10342

JavaScript-观察者模式(publish/subscribe)

JavaScript-观察者模式(publish/subscribe)观察者模式又叫做发布订阅模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生改变时就会通...
  • qiqingjin
  • qiqingjin
  • 2016年05月08日 14:27
  • 5487

Meteor中subscribe和publish简单介绍

在使用publish时 需要现在工程目录下运行 meteor remove autopublish, 先看官网上是怎么说的 Each document set is defined by ...
  • a6383277
  • a6383277
  • 2013年03月02日 19:17
  • 3419

设计模式之观察者模式(发布-订阅模式publish/Subscribe)

观察者模式 Observer   观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。   这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更...
  • qq279880252
  • qq279880252
  • 2014年09月29日 19:17
  • 1778

ActiveMQ的publish/subscribe

Publish/Subscribe(发布/订阅模式):1对多 package org.jms.demo.publish_subscribe; import javax.jms.Connec...
  • manmanxiaohui
  • manmanxiaohui
  • 2016年11月12日 19:20
  • 680

Jquery 订阅/发布插件 JQUERY SUBSCRIBE/PUBLISH PLUGIN

插件主页:http://plugins.jquery.com/project/jQuerySubscribe 提供下面的方法 $elem.subscribe(topic, handler,...
  • watson243671
  • watson243671
  • 2011年09月26日 11:45
  • 3730

RabbitMQ入门教程 For Java【3】 - Publish/Subscribe

RabbitMQ入门教程 For Java【3】 - Publish/Subscribe我的开发环境: 操作系统: Windows7 64bit 开发环境: JDK 1.7 - 1.7.0_55...
  • chwshuang
  • chwshuang
  • 2016年01月13日 19:09
  • 5462
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Publish/Subscribe 设计模式达到对象间数据同步(二)
举报原因:
原因补充:

(最多只允许输入30个字)