O'Reilly logo

C# 3.0 Design Patterns by Judith Bishop

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Mediator Pattern

Role

The Mediator pattern is there to enable objects to communicate without knowing each other's identities. It also encapsulates a protocol that objects can follow.

Illustration

The Mediator pattern is all about communication. There are numerous ways of communicating these days. Communication can be between two individuals, or among members of a group. Often there is protocol that is observed between the members of a group. Messages might also be vetted for content. All of this points to the need for a mediator.

Consider a mailing list whose members are people interested in C# 3.0 Design Patterns. People interested in the topic can join the mailing list by subscribing to it using a special message subject ("Subscribe"). Any messages that come in will go to all of the list's subscribers. Members can remove themselves from the list at any time by sending an "Unsubscribe" message.

Of course, mailing lists are seldom so simple. Members expect that messages they receive will not be spam, will come only from other members, and will be relevant to the topic at hand. To enforce this latter rule, the cs3pd group might decide not to permit any messages that mention Java, for instance. Sending out messages and checking their content is termed "moderating" the list. Some of the moderation functionality can be handled by software, and some of it will be done by a designated person in the group (usually referred to as the moderator).

Figure 9-5 shows an example of a moderation panel ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required