A volte hai molte entità che hanno parti comuni, ma dovrebbero anche essere indirizzate in modo univoco nell'interfaccia utente. Ad esempio, in un CMS, hai molti tipi di contenuti (come notizie, immagini, articoli, pagine, ecc.) Che hanno in comune titolo, URL, impostazioni SEO, ecc. Ma che hanno anche campi specifici. Ad esempio, l'immagine ha un campo percorso, mentre le notizie non hanno questo.
Ora, quando vuoi lavorare con questi articoli per pagina, incontri blocchi lunghi switch
e if
. Ad esempio:
switch(currentLoadedContentType)
{
case ContentType.Gallery:
// Show gallery specific fields;
break;
case ContentType.News:
// Show news specific fields;
break;
case ContentType.Artiel:
// Show artiels specific fields;
break;
case ContentType.Page:
// Show pages specific fields;
break;
}
Man mano che aumenti il numero di tipi di contenuti, questi elenchi diventano sempre più lunghi. Quali modelli sono disponibili per ridurre la lunghezza o eliminare questo interruttore lungo, ma allo stesso tempo non comportano la ripetizione. (Sono un grande fan di DRY).