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.