Dis que j'ai:
interface Thing
{
GetThing();
}
class FastThing : Thing
{
public int GetThing()
{
return 1;
}
}
class SlowThing : Thing
{
public int GetThing()
{
return GetThingFromDatabase();
}
}
Est-ce une violation du principe de substitution de Liskov?
FastThing
par SlowThing
, le LSP ne s'applique pas. Si vous ajoutez un commentaire Thing::GetThing
qui dit "est très rapide", la question peut être discutée.
GetThingFromDatabase()
n'est pas assez lent pour rendre cela controversé.Factor4096BitPublicKey();return 1;
rendrait les choses un peu plus intéressantes.