Programování
State
Přesnunout logiku, která je uvnitř toho objektu, zavislá na tom stavu, tak jí vyčlenit do samostatného objektu toho stavu.
Špatné zapsání:
Špatné zapsání:
public class Car
{
public string Rotation { get; set; } = "Left";
public void Draw()
{
if (Rotation == "left")
{
Console.WriteLine("left");
}else if (Rotation == "right")
{
Console.WriteLine("right");
}
else if (Rotation == "up")
{
Console.WriteLine("up");
}
else if (Rotation == "down")
{
Console.WriteLine("down");
}
}
}
Dobré zápsání:
public class Car
{
public IRotation Rotation { get; set; } = new LeftRotation();
public void Draw()
{
this.Rotation.Draw();
}
}
public interface IRotation
{
public void Draw();
}
public class UpRotation : IRotation
{
public void Draw()
{
Console.WriteLine("up");
}
}
public class LeftRotation : IRotation
{
public void Draw()
{
Console.WriteLine("left");
}
}
public class RightRotation : IRotation
{
public void Draw()
{
Console.WriteLine("right");
}
}
public class DownRotation : IRotation
{
public void Draw()
{
Console.WriteLine("down");
}
}