Attualmente sto usando decoratori per applicare varie modifiche a un modello prima di renderlo.
Tuttavia, non sono sicuro del mio decoratore di cache, perché attualmente è in grado di rompere la catena di decoratori e restituire un oggetto memorizzato nella cache anziché l'oggetto decorato originale.
class Cache : Decorator
{
public String Render()
{
if(templateCache.IsCached('some_template_identifier'))
{
return templateCache.Get('some_template_identifier');
}
String renderedTemplate = Template.Render();
templateCache.Cache(renderedTemplate);
return renderedTemplate;
}
}
Questa cattiva pratica è questa? Dovrei sempre restituire l'oggetto decorato originale o è giusto interrompere il flusso in questo modo e restituire un oggetto diverso?