Ho un gruppo di classi che estendono una singola classe astratta. Un sottoinsieme di queste classi richiede una implelmentazione identica di uno dei metodi, un altro sottoinsieme delle classi richiede un'altra implementazione del metodo e un terzo sottoinsieme ne richiede un altro. In tutto ci sono una decina di classi figlio, ma solo tre possibili implementazioni di uno dei metodi. (Esistono molti altri metodi implementati dalle classi che non hanno nulla in comune.)Come fare questo senza ereditarietà multipla
Sto cercando di capire il modo migliore per farlo. Penso che quello che avrei fatto in C++ è l'ereditarietà multipla: crea tre classi che implementano solo questo metodo, quindi i figli ereditano da quella appropriata di quelle tre classi.
Esiste una best practice per fare questo in Java?
Stavo considerando uno strato intermedio di tre classi astratte, tra la classe astratta principale ei bambini. Ognuno dei tre che eredita dalla principale classe astratta e implementa il metodo in questione. Quindi i bambini ereditano da questi tre. Ma quello che non mi piace è che cosa succede se un altro metodo ha un simile comportamento di "raggruppamento", e non corrisponde alle tre classi "middle tier"? Sarebbe brutto
Qualcosa di tutto questo ha senso? Sto scrivendo di fretta ...
MODIFICA: Così, 24 ore dopo aver fatto la mia domanda, ho ricevuto circa una mezza dozzina di modelli da investigare. Non sono ancora sicuro che siano tutti nomi ufficiali di design pattern. Ma esaminerò ciascuno e poi riferirò (e sceglierò una risposta corretta). Gli zoccoli proposti finora:
* Delegation
* Bridge
* Strategy
* Composition
* Decorator (if I was choosing on name alone, I choose this one)
ho anche bisogno di aggiungere che il metodo che è in corso di attuazione ha bisogno di accedere a quasi tutti i membri privati della classe. Quindi questo sarà un fattore importante nella mia scelta.
Grazie per il link, leggerò e tornerò con le mie domande. Continuerai ad ascoltare? Sono nuovo qui. I commenti postati per le risposte causano un tipo di avviso da inviare al rispondente? –
I commenti alle risposte fanno scattare una piccola notifica, ma se avete domande successive è più nello spirito del sito Web pubblicarli come nuovi (controllando la presenza di duplicati) invece di richiedere risposte di follow-up su quella precedente. La meta-discussione come questa ha [il proprio sito secondario] (http://meta.stackoverflow.com/) ed è qui disapprovata. – Barend