(NET) NET (2016)

Mediator in VB.NET

Defines simplified communication between classes

Return


Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently. Mediator pattern facilitate loosely coupled communication between different objects and object types. The mediator is a central hub through which all interaction must take place.







Please download project with this source code from https://github.com/ViacheslavUKR/StandardDisignOopPattern



   1:      ' Mediator Design Pattern.
   2:      ' See description in //www.vb-net.com/ProgramTheory/Mediator.htm
   3:      Class MainApp
   4:          ' Entry point into console application.
   5:          Public Shared Sub Main()
   6:              Dim m As New ConcreteMediator()
   7:              Dim c1 As New ConcreteColleague1(m)
   8:              Dim c2 As New ConcreteColleague2(m)
   9:              m.Colleague1 = c1
  10:              m.Colleague2 = c2
  11:              c1.Send("How are you?")
  12:              c2.Send("Fine, thanks")
  13:              ' Wait for user
  14:              Console.ReadKey()
  15:          End Sub
  16:      End Class
  17:   
  18:      ' The 'Mediator' abstract class
  19:      MustInherit Class Mediator
  20:          Public MustOverride Sub Send(message As String, colleague As Colleague)
  21:      End Class
  22:   
  23:      ' The 'ConcreteMediator' class
  24:      Class ConcreteMediator
  25:          Inherits Mediator
  26:          Private _colleague1 As ConcreteColleague1
  27:          Private _colleague2 As ConcreteColleague2
  28:          Public WriteOnly Property Colleague1() As ConcreteColleague1
  29:              Set(value As ConcreteColleague1)
  30:                  _colleague1 = value
  31:              End Set
  32:          End Property
  33:          Public WriteOnly Property Colleague2() As ConcreteColleague2
  34:              Set(value As ConcreteColleague2)
  35:                  _colleague2 = value
  36:              End Set
  37:          End Property
  38:          Public Overrides Sub Send(message As String, colleague As Colleague)
  39:              If colleague Is _colleague1 Then
  40:                  _colleague2.Notify(message)
  41:              Else
  42:                  _colleague1.Notify(message)
  43:              End If
  44:          End Sub
  45:      End Class
  46:   
  47:      ' The 'Colleague' abstract class
  48:      MustInherit Class Colleague
  49:          Protected mediator As Mediator
  50:          ' Constructor
  51:          Public Sub New(mediator As Mediator)
  52:              Me.mediator = mediator
  53:          End Sub
  54:      End Class
  55:   
  56:      ' A 'ConcreteColleague' class
  57:      Class ConcreteColleague1
  58:          Inherits Colleague
  59:          ' Constructor
  60:          Public Sub New(mediator As Mediator)
  61:              MyBase.New(mediator)
  62:          End Sub
  63:          Public Sub Send(message As String)
  64:              mediator.Send(message, Me)
  65:          End Sub
  66:          Public Sub Notify(message As String)
  67:              Console.WriteLine(Convert.ToString("Colleague1 gets message: ") & message)
  68:          End Sub
  69:      End Class
  70:   
  71:      ' A 'ConcreteColleague' class
  72:      Class ConcreteColleague2
  73:          Inherits Colleague
  74:          ' Constructor
  75:          Public Sub New(mediator As Mediator)
  76:              MyBase.New(mediator)
  77:          End Sub
  78:          Public Sub Send(message As String)
  79:              mediator.Send(message, Me)
  80:          End Sub
  81:          Public Sub Notify(message As String)
  82:              Console.WriteLine(Convert.ToString("Colleague2 gets message: ") & message)
  83:          End Sub
  84:      End Class




See also:
Creational Patterns Structural Patterns Behavioral Patterns

Comments ( )
<00>  <01>  <02>  <03>  <04>  <05>  <06>  <07>  <08>  <09>  <10>  <11>  <12>  <13>  <14>  <15>  <16>  <17>  <18>  <19>  <20>  <21>  <22>  <23
Link to this page: //www.vb-net.com/ProgramTheory/Mediator.htm
<SITEMAP>  <MVC>  <ASP>  <NET>  <DATA>  <KIOSK>  <FLEX>  <SQL>  <NOTES>  <LINUX>  <MONO>  <FREEWARE>  <DOCS>  <ENG>  <CHAT ME>  <ABOUT ME>  < THANKS ME>