Powiedz, że mam:
interface Thing
{
GetThing();
}
class FastThing : Thing
{
public int GetThing()
{
return 1;
}
}
class SlowThing : Thing
{
public int GetThing()
{
return GetThingFromDatabase();
}
}
Czy jest to naruszenie zasady substytucji Liskowa?
FastThingsię SlowThing, LSP nie ma zastosowania. Jeśli dodasz komentarz, Thing::GetThingktóry mówi „Jest bardzo szybki”, pytanie można przedyskutować.
GetThingFromDatabase()nie jest wystarczająco wolny, aby wywołać to kontrowersje.Factor4096BitPublicKey();return 1;sprawiłoby, że rzeczy byłyby trochę bardziej interesujące.