Questo è un classico esempio di come le persone decidono di violare il Principio di sottotitolazione di Liskov. Lo sconsiglio vivamente, ma incoraggerei forse una soluzione diversa:
- Forse la classe che stai scrivendo non fornisce la funzionalità che l'interfaccia prescrive se non ha l'uso di tutti i membri dell'interfaccia.
- In alternativa, quell'interfaccia potrebbe fare più cose e potrebbe essere separata per il principio di segregazione dell'interfaccia.
Se il primo è il tuo caso, non implementare l'interfaccia su quella classe. Pensa a una presa elettrica in cui il foro di terra non è necessario, quindi non in realtà si attacca al terreno. Non si collega nulla con la terra e non un grosso problema! Ma non appena usi qualcosa che ha bisogno di un terreno, potresti subire un fallimento spettacolare. È meglio non punzecchiare un foro falso. Quindi se la tua classe non effettivamente fa ciò che l'interfaccia intende, non implementare l'interfaccia.
Ecco alcuni bit rapidi di wikipedia:
Principio di sostituzione di Liskov può essere semplicemente formulato come "Non rafforzare le pre-condizioni e non indebolire post-condizioni".
More formally, the Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called (strong) behavioral subtyping, that was initially introduced by Barbara Liskov in a 1987 conference keynote address entitled Data abstraction and hierarchy. It is a semantic rather than merely syntactic relation because it intends to guarantee semantic interoperability of types in a hierarchy, [...]
Per l'interoperabilità semantica e la sostituibilità tra diverse implementazioni degli stessi contratti - hai bisogno che tutti si impegnino per gli stessi comportamenti.
Principio di segregazione dell'interfaccia parla dell'idea che le interfacce devono essere separate in insiemi coerenti in modo tale da non richiedere un'interfaccia che fa molte cose disparate quando si desidera solo una funzione one . Pensa ancora all'interfaccia di una presa elettrica, potrebbe avere anche un termostato, ma renderebbe più difficile l'installazione di una presa elettrica e potrebbe rendere più difficile l'uso per scopi non di riscaldamento. Come una presa elettrica con un termostato, le interfacce di grandi dimensioni sono difficili da implementare e difficili da usare.
The interface-segregation principle (ISP) states that no client should be forced to depend on methods it does not use.[1] ISP splits interfaces which are very large into smaller and more specific ones so that clients will only have to know about the methods that are of interest to them.