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?
FastThing
się SlowThing
, LSP nie ma zastosowania. Jeśli dodasz komentarz, Thing::GetThing
któ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.