Se capisco bene il tuo esempio, suppongo che Vaschetta non possa essere chiusa per il semplice fatto che la chiusura è manuale, giusto?Salve avrei bisogno di un consiglio.
[...]
Detto questo, suggerirei solamente di fare molta attenzione a raggruppare determinate classi in un'unica gerarchia se non ottieni un vantaggio utile.
Mi spiego: sebbene i dispositivi, ad eccezione della "vaschetta", siano tutti "apribili" e "chiudibili", non è detto che farli derivare da una superclasse comunque porti un vantaggio e sia corretto concettualmente, così come non è corretto far derivare una televisione o un automobile dalla medesima superclasse per il fatto che entrambe possono essere accese o spente: sono entità talmente differenti che la loro radice comunque è inutile. Tutt'al più, supponendo di tradurre quest'ultimo esempio in codice, al massimo potresti disporre di due classi distinte, anche a livello di gerarchia, che hanno metodi dal medesimo significato, con lo stesso nome eventualmente (es. Accendi e Spegni) ma con implementazioni totalmente differenti.
Nel tuo caso, se la classe comune è un requisito che non puoi evitare, si potrebbe anche valutare di rendere la classe Vaschetta con OpenCloseDevice, ma con il metodo Close che non fa nulla.
Credo sia più corretto comunque, come ti è stato peraltro suggerito, implementare un metodo Device generico, poichè difficilemente sfrutterai anche il polimorfismo poichè le classi discendenti dal tuo OpenCloseDevice non avranno comunque caratteristiche in comune e intercambiabili se non quella di discendere dalla stessa classe.
Ciao!![]()