Pattern di progettazione per le classi Util e le variabili statiche generali

0

Sto sviluppando un Mojo (lo considero come una normale classe) per il mio plugin Maven personalizzato. C'è un Mojo astratto in cima. Ho alcuni altri Mojos personalizzati nell'esempio che include il lato server. Ho alcune variabili statiche e alcuni metodi utili, ad esempio, ottenere il nome del sistema operativo, correggere il separatore di file per utilizzare il sistema operativo ecc. Ho creato un Mojo di base astratto che estende Mojo astratto e inserisce tutte le cose comuni al suo interno. Quando creo un Mojo (ad esempio il lato server includer) lo estendo dal mio Base Mojo. Tuttavia dovrei pensare che dovrei separare le variabili e utilizzare i metodi o meno e che tipo di schema dovrei seguire.

Per chiarire che c'è:

  • AbstractMojo all'inizio per impostazione predefinita (non posso cambiarlo)
  • BaseMojo una classe astratta che estende AbstractMojo che utilizza metodi e variabili di sistema statiche
  • CustomMojo estende BaseMojo e fa la sua responsabilità.

Qualche idea su come implementare un design per le mie esigenze?

    
posta kamaci 07.02.2013 - 07:50
fonte

2 risposte

1

Mi chiedo, perché questo è stato migrato. Ma comunque:

Non dovresti mettere tutto in un mojo di base. Ciò rende praticamente impossibile riutilizzare quel codice. Basti pensare al mojo in crescita e devi dividere quel mojo in classi separate. Non puoi farlo se quel codice ha una dipendenza dalla classe base del mojo.

Dovresti creare servizi che forniscano la funzionalità che hai attualmente nel tuo mojo di base. Sono riutilizzabili e quindi accessibili da altri luoghi.

Come regola generale:
YAGNI - Non avrai bisogno di una dichiarazione membro in un classe che è intesa solo per essere utilizzata dalle classi derivate. Come sai che è usato davvero?

    
risposta data 13.02.2013 - 19:26
fonte
0

Il pattern dipende da cosa stanno facendo le classi Mojo. I metodi util devono essere spostati in un helper o in una classe di utilità o incapsulati all'interno della classe che li utilizza. A meno che BaseMojo non fornisca implementazioni comuni per un comportamento che può essere superato in Mojos personalizzati, non è necessario.

    
risposta data 01.03.2013 - 19:39
fonte

Leggi altre domande sui tag