Dove mettere i metodi comuni condivisi

9

Ho un sacco di metodi che sono comunemente usati ovunque. In questo momento il codefile è chiamato globals, per rappresentare il fatto che sono ... anzi ... globali.

Tuttavia, non mi piace.

Voglio raggrupparli in una classe e passare un'interfaccia in giro. Farò solo una istanza, ma non sto cadendo nella trappola singleton qui.

Innanzitutto, come dovrei nominare la classe. Voglio evitare il nome globale perché temo che i manutentori possano avere un'idea sbagliata.

Inoltre, come dovrei prendere in considerazione la possibilità di suddividere un insieme di metodi in modo che il comportamento possa cambiare e adattarsi?

Il set di metodi contiene cose come:

  • Tabelle di conversione
  • Interazione degli appunti
  • Gestione dei caratteri incorporati
  • Metodi di disegno comuni
  • Fornire un'interfaccia con accesso alle risorse usate più spesso
posta Lee Louviere 11.08.2011 - 00:07
fonte

3 risposte

4

Lo spazio dei nomi potrebbe essere [application].Common.Shared

Le classi potrebbero essere nominate:

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

Vorrei suddividere le classi perché sembra che facciano cose diverse.

    
risposta data 11.08.2011 - 01:34
fonte
1

Se hai intenzione di creare un'istanza, hai praticamente un singleton. Inoltre, la cosa a cui la gente si riferirebbe normalmente se parlasse di una trappola singleton è che i singleton sono globali, e la maggior parte delle classi è meglio non essere globale. Quindi potresti anche avere un singleton. Se è ragionevole passare un'interfaccia agli oggetti che potrebbero voler chiamarla, allora non è veramente globale.

Inoltre, mettere tutto in uno solo dei metodi globali rende difficile che il comportamento cambi e si adatti, poiché non solo ogni passaggio a un metodo richiede una nuova sottoclasse, ma ogni combinazione delle modifiche avrebbe bisogno della sua sottoclasse.

Suggerirei di avere singleton per ognuno che è veramente globale (ti prendo in parola che sono tutti) e una sorta di registro o factory che ti dà un'istanza (il che significa che puoi implementare come singleton o no, dal momento che l'interfaccia non farà promesse). Li chiamerei in base a quello che fanno dal punto di vista del chiamante.

    
risposta data 11.08.2011 - 00:26
fonte
1

Normalmente inserisco questi tipi di cose nei propri assembly nomi come "foo.Common" sotto namespace come "foo.Common.Collections" o "foo.common.UI" ecc. Quindi, posso fare riferimento all'assembly in qualunque progetto ho bisogno di loro.

    
risposta data 11.08.2011 - 03:32
fonte

Leggi altre domande sui tag