Considere a seguinte classe TestSpan que representa um texto:
public class TextSpan implements TextItem { /** The text in this span. */ private String _text; /** * @param text the text in this span. **/ public TextSpan(String text) { _text = text; } /** * Renders the text of this TextSpan * @return the rendered text **/ public String render() { return "<span>" + _text + "</span>"; } }
public interface TextItem { /** * Text items can be rendered. * * @return rendered text item. */ String render(); }
O método render() tem como funcionalidade devolver a cadeia de caracteres que representa o texto.
O código actual desta classe não permite modificação do aspecto do texto, permitindo que este possa ser apresentado em negrito, itálico, sublinhado, ou em combinações variadas (e.g. negrito e itálico ou itálico sublinhado, etc.).
Pretende-se agora ter a possibilidade de poder modificar dinamicamente o aspecto de um texto sem que isso provoque alterações no código da aplicação já realizado. Represente as características gráficas da seguinte forma:
- normal <span>normal</span>
- negrito <b>negrito</b>
- itálico <i>itálico</i>
- sublinhado <u>sublinhado</u>
Qual o padrão de desenho a aplicar neste caso?
Exemplifique a aplicação do padrão escolhido para o caso do negrito e itálico.