Diga que tenho:
interface Thing
{
GetThing();
}
class FastThing : Thing
{
public int GetThing()
{
return 1;
}
}
class SlowThing : Thing
{
public int GetThing()
{
return GetThingFromDatabase();
}
}
Isso é uma violação do princípio da substituição de Liskov?
FastThing
por SlowThing
, o LSP não se aplicará. Se você adicionar um comentário ao Thing::GetThing
qual diz "É muito rápido", a questão poderá ser discutida.
GetThingFromDatabase()
não é lento o suficiente para tornar isso controverso.Factor4096BitPublicKey();return 1;
tornaria as coisas um pouco mais interessantes.