GRASP (object-oriented design): Difference between revisions

Content deleted Content added
Line 41:
The '''controller''' pattern assigns the responsibility of dealing with system events to a non-[[User Interface|UI]] class that represents the overall system or a [[use case]] scenario. A controller object is a non-user interface object responsible for receiving or handling a system event.
 
Problem Who should be responsible for handling an input system event?<br>
Solution: A use case controller should be used to deal with ''all'' system events of a use case, and may be used for more than one use case. For instance, for the use cases ''Create User'' and ''Delete User'', one can have a single class called ''UserController'', instead of two separate use case controllers.
 
The controller is defined as the first object beyond the UI layer that receives and coordinates ("controls") a system operation. The controller should delegate the work that needs to be done to other objects; it coordinates or controls the activity. It should not do much work itself. The GRASP Controller can be thought of as being a part of the application/service layer<ref>{{cite web |url=https://groups.yahoo.com/neo/groups/domaindrivendesign/conversations/messages/7582 |title=Application Layer like business facade? |work=Yahoo! Groups (domaindrivendesign) |accessdate=15 July 2010}}</ref> (assuming that the application has made an explicit distinction between the application/service layer and the [[___domain layer]]) in an object-oriented system with common layers in an information system logical architecture.
 
 
===Indirection===