Domanda

Di recente ho davvero messo a punto l'iniezione di dipendenza e la meraviglia del modello di design di Decorator e lo sto usando dappertutto.

Per quanto meravigliosa, tuttavia, una cosa con cui ho avuto difficoltà è nominare le mie lezioni di decoratore, quindi vorrei solo sapere cosa fanno gli altri. Aggiungete sempre la parola decoratore? Incorporate il nome dell'interfaccia che sta decorando? Ottengono il loro spazio dei nomi?

Cosa fate ragazzi?

È stato utile?

Soluzione

Evito di usare i nomi dei motivi di progettazione. Penso che questo appartenga alla documentazione se ovunque. Assegna un nome alla classe / funzione del decoratore dopo ciò che fa o rappresenta. Il fatto che decori o getti un ponte o collegamenti o proxy o rappresenti è di scarsa importanza.

Ogni volta che assegni un nome a una stringa, aggiungi un suffisso String? Mi sembra hgrnNotation per me, ed è qualcosa che cerco di evitare.

Altri suggerimenti

Prendi un esempio dall'IO Framework dell'API Java. Utilizza ampiamente il motivo decorativo ma i nomi delle classi non riflettono questo. Ad esempio un BufferedReader può decorare un FileReader ma prendono il nome dalla loro funzione: Lettori.

L'aggiunta di decoratore al nome comporterebbe ulteriori problemi se si incorporano anche altri motivi che coinvolgono le stesse classi come spesso accade. Potresti finire con una classe chiamata MyDecoratorStrategyComponent.

Chiamalo come fa.

Ho un sacco di decoratori per un'interfaccia IPrinter. Si chiamano:

  • PrintDisasterRecovery - Eccezione gestione
  • PrintQueuer - Lo rende un chiamata asincrona

Questi tipi ereditano entrambi da PrintDecorator, quindi se qualcuno fa capolino sotto le copertine può vedere cosa sta succedendo.

Generalmente dove il motivo è incapsulato in un oggetto (rispetto a una raccolta di oggetti), allora è più chiaro e più facile includere il nome del motivo nella classe, in questo caso usando Decorator come suffisso. Funziona bene per proxy, decoratori, fabbriche, adattatori ecc. Ma non funziona per altri schemi in cui è necessario un gruppo di oggetti nell'implementazione del modello come un ponte (cioè quale oggetto prenderebbe opportunamente il suffisso -bridge?)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top