Aggiungi metodo all'interfaccia per una sola implementazione

0

Ho una fabbrica per un'interfaccia con diverse implementazioni. Ma un'implementazione richiede un metodo extra di cui gli altri non hanno bisogno. Come posso risolvere questo problema senza implementare metodi di "eccezione non implementata" in altre implementazioni?

    
posta ZxCvBnM 28.03.2017 - 09:04
fonte

2 risposte

3

I consumatori dell'interfaccia devono chiamare il metodo richiesto solo per un'implementazione?

Se il consumatore non ha bisogno di chiamare il metodo, è un dettaglio dell'implementazione . Pertanto, non è di interesse per i consumatori dell'interfaccia, in quanto dovrebbero anche / non chiamarlo. Basta aggiungere il metodo come metodo privato dell'implementazione che ne ha bisogno.

Se d'altra parte il metodo deve essere accessibile per i consumatori dell'interfaccia, stai violando la segregazione dell'interfaccia e sostituzione di Liskov principi. Estrai il metodo in una propria interfaccia.

    
risposta data 28.03.2017 - 09:19
fonte
0

Non aggiungere il metodo all'interfaccia. Se il metodo è rilevante solo per quella implementazione, aggiungilo solo a quella. Il punto dell'interfaccia è di astrarre gli elementi comuni di ogni fabbrica, quindi un metodo specifico per una singola fabbrica non dovrebbe essere nell'interfaccia generale di fabbrica.

    
risposta data 28.03.2017 - 09:17
fonte

Leggi altre domande sui tag