Non riesco a trovare una risposta su questo e voglio solo essere sicuro che sia uno standard di codifica ok. Ho un'interfaccia A che viene utilizzata da molte classi diverse e non voglio che l'interfaccia A cambi. Mi sono imbattuto in un nuovo requisito che richiederà l'enumerazione di molte delle classi che implementano l'interfaccia A, ma non tutte le classi hanno bisogno di questo enum. Non voglio le classi che non richiedono questo nuovo enum per implementare questa nuova funzionalità. Così ho creato l'interfaccia B che contiene il nuovo enum che dovevo aggiungere. Ho quindi realizzato un'interfaccia E1 di interfaccia B di A e questa è la mia preoccupazione, è ok per un'interfaccia per ereditare un'altra interfaccia? Per continuare con le mie modifiche, ho quindi modificato le classi che avevano bisogno del nuovo enum per implementare l'interfaccia B invece dell'interfaccia A poiché era ereditata dall'interfaccia B. Ho pensato di implementare entrambe le interfacce nelle mie classi che ne avevano bisogno, ma sto usando il Interfaccia su tutto il codice e vorrebbe usare solo un'interfaccia per guardare attraverso le classi e non due.Se un'interfaccia eredita un'altra interfaccia
Spero che questo sia stato abbastanza chiaro (probabilmente troppo lungo) ma se qualcuno può darmi qualche consiglio su questo o sto facendo bene o sto sbagliando per favore fammi sapere.
Grazie!
Inizialmente avevo suggerito di applicare il principio di sostituzione di Liskov. In retrospettiva, questo non è veramente rilevante. La maggior parte dei requisiti dell'LSP (mantenimento delle invarianti, restrizioni sulle condizioni pre e post) sono in realtà applicabili solo a implementazioni concrete, non a interfacce. Detto questo, il principio generale di sostituibilità dovrebbe ancora guidare le decisioni di ereditarietà dell'interfaccia. –
Principio di sostituzione di Liskov: è importante assicurarsi che l'interfaccia B possa sostituire completamente l'interfaccia A. Altrimenti, si arriverà alla funzionalità che è necessario implementare e che non si desidera. Questo porta a un codice extra che non vuoi, il che rende il software meno stabile. –