CSC/ECE 517 Fall 2012/ch2b 2w43 iv

From Expertiza_Wiki
Jump to navigation Jump to search

Mediator Pattern

Introduction

Mediator pattern comes under the category of behavioral pattern. It specifies an object that includes the encapsulation about the interaction among various objects.

It prevents objects to interact with each other explicitly and thus it facilitates loose coupling. In other words it handles complex communication among related objects. All the objects communicate with the mediator when they want to interact with each other. Thus it improves maintainability.

All the classes which interact with the mediator are called colleagues. These colleagues know who their mediator is and the mediator also knows which colleagues can interact with it. The colleagues send messages to the mediator object. The mediator sends message to other classes. Thus the object which initiated this communication does not need to have knowledge about other objects. All they need to know is about their mediator who is responsible to carry out this communication.

Following classes/objects take part in this process:

Mediator: Provides interface for communication among colleagues.

Concrete Mediator: It coordinates the colleagues and implements cooperative behavior. It also holds information about the colleagues.

Colleague Classes: Colleague classes know about their mediator.

A real life example of mediator pattern can be of an airport control tower. It is the job of this tower to control all the planes. It decides which plane will take-off and land at what time rather than plane to plane communication.

Case1: Without the use of Mediator Pattern

Example: Without using Mediator Pattern


In this example, there are four departments of a hospital, namely :Pathology, Radiology, Surgery and Physiology. When one department needs some data from another department, they need to explicitly contact the other department for that data. Since these departments directly interact with each other, the communication between these parties is very complex and results in high coupling.













Case2: With the use of Mediator Pattern

Example: Using Mediator Pattern


To reduce coupling in the above example we add a Hospital Management Mediator which sits in between all the departments and all the communication among them is handled by the mediator. The control logic of the entire system is included in the mediator. Whenever a new department is added or some functionality of an existing department needs to be changed, only the mediator control logic needs to be modified. This facilitates loose coupling as the departments do not need to communicate with each other explicitly. They also do not need to know about internal details of other departments.











Comparison of mediator pattern with facade pattern

Facade Pattern

First of all let us see what facade pattern is. A Facade design pattern provides a unified interface to a larger body of code. This makes the use of subsystem easy. This pattern wraps the complicated subsystem with a simple interface. A facade pattern shields users from the complex inner details of the subsystem. Example of facade pattern could be of a web service where users can get access to the small services without knowing anything about their internal structures. They just need an interface which facade pattern provides.

For the same example as discussed above let us see how a facade pattern looks.

Example: Using Facade Pattern