100 likes | 213 Views
Mediator: Object Behavioral. Cam Quach Joel Derstine. Intent. Mediator is an object to coordinate state changes between other objects Mediator promotes loose coupling by preventing objects from referring to each other explicitly
E N D
Mediator: Object Behavioral Cam Quach Joel Derstine
Intent • Mediatoris an object to coordinate state changes between other objects • Mediator promotes loose coupling by preventing objects from referring to each other explicitly • Mediator allows designers to vary their interactions independently
Problem • Goal in OO design is to distribute behavior among objects • Distribution will increase reusability # of objects interconnections reusability reusability
Solutions mediator Mediator Colleague ConcreteMediator ConcreteColleague1 ConcreteColleague2 • Structure • Mediator provides an interface for communicating with Colleague objects • ConcreteMediatorimplements a cooperative behavior by coordinating the Colleague objects • Colleaguessend and receive requests from a Mediator object
A Conceptual Example: The Problem • Multiple aircraft in the air space of an airport need to communicate with each other about changes in (some of) their properties (speed, altitude, direction). • Where do the complexities reside if they tried to do this by communicating with each other directly? Duell, “Non-software examples of software design patterns”, Object Magazine, July 1997
A Conceptual Example: The Problem Some complexities? • Who do they need to contact • When (or how often) do they need to contact • What do they need to tell them I’m landing! ? Not yet! I’m still taking off!! Duell, “Non-software examples of software design patterns”, Object Magazine, July 1997
A Conceptual Example: A Solution A Control Tower (the “mediator”)! Manages the complexity of communications: • Who to contact (observer object?) • When to contact • What to say ? Duell, “Non-software examples of software design patterns”, Object Magazine, July 1997
A Technical Example: The Problem Some issues/questions: • How should the widgets on this dialog box communicate? • What are the dependencies? • Each widget knows how to do its job. But should it know how it fits into the larger picture? GOF, “Design Patterns”, 1995
A Technical Example: A Solution Create a FontDialogDirector Mediator! • Knows the widgets in the dialog box • Serves as the intermediary (widgets only know about the mediator). • Coordinates their interaction DialogDirector ShowDialog() CreateWidgets() WidgetChanged(Widget) director Widget Changed() FontDialogDirector CreateWidgets() WidgetChanged(Widget) ListBox GetSelection() list EntryField SetText() field GOF, “Design Patterns”, 1995
Consequences Mediator • Limits subclassing • Decouples colleagues • Simplifies object protocols • Abstracts how objects cooperate • Centralizes control