hhafez
hhafez

Reputation: 39750

When would you use the mediator design pattern

As the title states when would you recommend the use of the mediator design pattern and where do you see it used incorrectly?

Upvotes: 17

Views: 9844

Answers (4)

Kathiresh P
Kathiresh P

Reputation: 39

When you are dealing with multiple objects and they need to communicate with each other but you want them not to know about each other directly

Upvotes: 0

OscarRyz
OscarRyz

Reputation: 199234

I have used it to deal with swing apps.

When I'm building a GUI I don't like each control knowing each other because that would require subclassing.

Instead I have a Main object which contains the listener and the widgets and let it mediate between the different controls, buttons, textfields etc.

Upvotes: 3

keparo
keparo

Reputation: 34129

Use a mediator when the complexity of object communication begins to hinder object reusability. This type of complexity often appears in view instances, though it could really be anywhere.

Misuse of a mediator can result in crippling the interfaces of the mediator's colleague classes.

It seems a little funny to talk about misusing a pattern. If your implementation follows the pattern, then you've used the pattern. Otherwise, you haven't. In other words, if your mediator is doing something else, then it probably isn't a mediator. Patterns are defined by what they do, what they in fact are. The names of things are simply labels.

The real question to ask yourself is whether your implementation of a pattern fulfills the pattern's promises for your design. The mediator pattern aims to encapsulate complex inter-object communication when it is becoming unmanageable. If it hasn't accomplished this, or hasn't done it very well, you could say that a mediator is being misused. At some point, it becomes a value judgement.

Upvotes: 25

Robert Gould
Robert Gould

Reputation: 69855

The mediator is also basically what an event-pump is. A very common pattern in GUI's and Games.

Also I've used mediator before to communicate among very dispar systems, and legacy frameworks.

Upvotes: 2

Related Questions