Да, я бы сказал, что что-то тут не разработано. Трудно сказать, поскольку вы не показываете, как используется FallingPiece
или как он вписывается в систему, но мне не имеет смысла, почему ему нужно получить currentPiece
в своем конструкторе.
Поскольку похоже, что currentPiece
может меняться со временем, создается впечатление, что вы используете один экземпляр FallingPiece
в качестве контейнера-одиночки для текущего падающего элемента. В этом случае вы должны получить второй, третий и так далее кусочки каким-то образом. Почему бы просто не сделать то же самое для первого произведения?
Вы говорите, что когда фигура достигает дна, возникает событие, которое запускает генерацию новой фигуры, которая начинает падать. Разве вы не должны сами запустить это событие, чтобы начать первую часть?
В целом:
Общая причина (на мой взгляд), что работа с зависимостями не должна выполняться в конструкторе, заключается в том, что конструирование объекта должно быть связано только с настройкой класса, чтобы иметь возможность делать то, что ему нужно. Наличие классов do , которые они делают, должно выполняться через вызовы API объекта после его создания. В случае FallingPiece
, когда у него есть IPieceGenerator
, он может делать все, что ему нужно. На самом деле сделать это (начать падение части) следует, вызвав метод в его API или (как это, похоже, имеет место) запустить событие, на которое он будет реагировать.