Questa classe base per alcune forme che ho nel mio gioco assomiglia a questo. Alcune delle forme possono essere ridimensionate, alcune non possono.
private Shape shape;
public virtual void SetSizeOfShape(int x, int y)
{
if (CanResize()){
shape.Width = x;
shape.Height = y;
}
else {
throw new Exception("You cannot resize this shape");
}
}
public virtual bool CanResize()
{
return true;
}
In una sottoclasse di una forma che non desidero mai ridimensionare, sto sovrascrivendo il metodo CanResize()
in modo che un pezzo di codice client possa controllare prima di chiamare il metodo SetSizeOfShape()
.
public override bool CanResize()
{
return false;
}
Ecco come potrebbe apparire nel mio codice cliente:
public void DoSomething(Shape s)
{
if(s.CanResize()){
s.SetSizeOfShape(50, 70);
}
}
Questo LSP sta violando?