Я делал некоторое чтение here о создании неизменяемого объекта в java, и мне было интересно, можно ли создать изменяемый объект в определенных ситуациях?C# Неизменяемые классы и игровые объекты
Например, предположим, что мы создавали в пинг-понг игры в C#, очевидно, мы бы класс, который представляет собой шар, и два весла, вы бы написать класс мяч так:
class Ball
{
private readonly int xPosition;
private readonly int yPosition;
private readonly int ballSize;
private readonly string ballColor;
public Ball(int x, int y, int size, string color)
{
this.xPosition=x;
this.yPosition=y;
this.ballSize = size;
this.ballColor = color;
}
public int getX
{
get
{
return this.xPosition;
}
}
//left out rest of implementation.
или как это:
class Ball
{
private int xPosition;
private int yPosition;
private int ballSize;
private string ballColor;
public Ball(int x, int y, int size, string color)
{
this.xPosition=x;
this.yPosition=y;
this.ballSize = size;
this.ballColor = color;
}
public int getX
{
get
{
return this.xPosition;
}
set
{
this.xPosition = value;
}
}
}
}
в ситуации, когда наш объект (мяч), может изменить положение, размер (больше или меньше, в зависимости от уровня) и цвета, не было бы лучше, чтобы обеспечить сеттер недвижимость ? В этом случае сделать его изменчивым имеет смысл? Как бы вы к этому подошли?
Если мяч для пинг-понга должен был плавать в воздухе так же, как кирпичи, тогда это было бы нормально. Другими словами, если он не перемещается, сделайте его неизменным. Но неперемещающийся мяч для пинг-понга не так забавен, поэтому, возможно, изменчивый способ пойти, в комплекте с сеттерами. :) – MickyD
Итак, мой второй подход логичен, правильно? –
Думаю, что да. – MickyD