[size="5"]Intent
[bquote]Pass-off special render cases to Model code.[/bquote]
[size="5"]Problem
[bquote]Generic View code often becomes clotted with special cases, especially near the end of a project. Render Delegation gets the special cases out of the View code and into Model subclasses.[/bquote]
[size="5"]Solution
[bquote]An example clot in View code:
It is common for the view to do the transformation and sorting work and pass screen coordinates to the draw method of a model.[/bquote]
[size="5"] Structureif (typeToDraw==DARTH_VADERS_SHIP)
drawSpecialShieldEffect();
To encapsulate these kinds of special cases, the View delegates the draw back to the Model. For example: objectToDraw->draw(x,y)It is common for the view to do the transformation and sorting work and pass screen coordinates to the draw method of a model.[/bquote]
[bquote]Not available at this time.[/bquote]
[size="5"]Examples
[bquote]No examples at this time. Email [email="kevin@gamedev.net"]kevin@gamedev.net[/email] to contribute.[/bquote]
[size="5"]Issues and Risks
[bquote]Use Render Delegation when:
- You want to ensure reusability / encapsulation of the renderer.
- The View code becomes clotted with special cases.
- Every model tends to have a different implementations of render.
- There are only a few special cases and the cost (compile time, encapsulation) of including render interfaces in Model code is very high.[/bquote]
- There are only a few special cases and the cost (compile time, encapsulation) of including render interfaces in Model code is very high.[/bquote]
[size="5"]Related Patterns
[bquote]Render Delegation passes draw commands from View to Model.
Render Delegation may be part of an Appearance Map.[/bquote]
Render Delegation may be part of an Appearance Map.[/bquote]