LSP si applica al passaggio di un'istanza di una classe in un metodo, facendo in modo che il metodo faccia qualcosa con quell'istanza e produca spesso una sorta di risultato. Questo non ha importanza per le classi statiche poiché in C # non è possibile creare un'istanza di una classe statica.
Ancora più importante, le classi statiche sono sigillate e quindi non possono essere ereditate. Questo rende la tua domanda discutibile fino a quando C # va.
Si potrebbe dire che le classi statiche sono sempre conformi a LSP poiché non è mai possibile produrre una sottoclasse che viola tale principio. Si potrebbe anche dire che le classi statiche non sono mai conformi a LSP per lo stesso motivo.
In Java, le classi statiche sono leggermente diverse. Non è possibile contrassegnare una classe di livello superiore come "statica", quindi se si desidera creare una classe di utilità simile alle classi statiche di C #, è necessario dichiararla come
final
e nasconderne il costruttore. Una volta che lo fai, tuttavia, si comportano in modo simile a C #: non puoi istanziarli o sottoclassarli. Puoi dichiarare una classe interna come
static
, ma ciò non significa la stessa cosa che fa in C #: indica semplicemente una
classe nidificata di primo livello .
VB.NET si comporta esattamente allo stesso modo di C # in questo caso, per quanto ne so.
Non hai detto se sei interessato agli altri principi, ma li includerò comunque per completezza.
S ingle principio di responsabilità : una classe statica seguire facilmente questo principio.
O penna / principio chiuso : poiché le classi statiche sono sigillate, non possono mai seguire questo principio.
L iskov principio di sostituzione : come sopra.
Ho principio nterface segregazione : non si applica ad una singola classe, ma la scissione una classe statica di grandi dimensioni in quelle più piccole, più specializzati potrebbe essere un passo verso seguendo questo principio.
D principio ependency inversione : classi statiche non possono implementare interfacce, quindi ogni classe usando dipenderà sempre qualsiasi attuazione esiste al momento. Le classi statiche violano quindi questo principio.
Poiché le classi statiche non soddisfano tutti e 5 i criteri, non sono SOLID.