What first object beyond the UI layer receives and coordinates ("controls") a system operation?
Assign the responsibility to a class representing one of the following choices:
· Represents the overall "system," a "root object," a device that the software is running within, or a major subsystemthese are all variations of a facade controller.
· Represents a use case scenario within which the system event occurs, often named <UseCaseName>Handler, <UseCaseName>Coordinator, or <UseCaseName>Session (use case or session controller).
o Use the same controller class for all system events in the same use case scenario.
Normally, a controller should delegate to other objects the work that needs to be done; it coordinates or controls the activity. It does not do much work itself.
· Increased potential for reuse and pluggable interfaces. These benefits ensure that application logic is not handled in the interface layer. The responsibilities of a controller could technically be handled in an interface object, but such a design implies that program code and the fulfillment of application logic would be embedded in interface or window objects. An interface-as-controller design reduces the opportunity to reuse logic in future applications, since logic that is bound to a particular interface (for example, window-like objects) is seldom applicable in other applications. By contrast, delegating a system operation responsibility to a controller supports the reuse of the logic in future applications. And since the application logic is not bound to the interface layer, it can be replaced with a different interface.