Причина, по которой вызов TileHandler в статическом контексте не является наилучшим возможным дизайном, заключается в том, что он объединяет компоненты вашего дизайна, которые в противном случае могли бы быть отделены.
Если в будущем вы решите использовать несколько TileHandler, вам придется проделать большую работу, чтобы учесть это изменение.
Если вы решите удалить TileHandler, вам придется проделать большую работу, чтобы учесть это изменение.
Предположим, что в будущем вы создадите другой уровень / зону, который будет обрабатывать плитки не так, как ваш текущий TileHandler. Затем вам нужно либо указать способ использования плитки, либо вызвать другой обработчик.
Если TileHandler был передан в качестве параметра объектам, которые его используют, то вы можете просто передать другой в следующий раз или установить другой обработчик плиток для объектов, которые используют его позже.
Лично я получаю доступ ко многим вещам в моих играх XNA из статического контекста и предполагаю, что у меня никогда не будет больше одной из них.
Если вы хотите иметь возможность повторно использовать код игрового движка в следующей игре, вам, вероятно, придется переписать большую часть материала, который вы сейчас написали, как статический.
Короче говоря:
В пользу не использования статического контекста:
Передача объектов в качестве параметров в максимально возможной степени разъединяет игровые элементы и позволяет вам легче модифицировать / повторно использовать их для текущих или будущих проектов. Это также позволяет вам немного легче управлять сложностью больших объемов кода (подумайте о наличии сотен статических менеджеров в вашем игровом классе, в большой игре).
В пользу статического контекста:
Объявление и доступ к объектам из статического контекста облегчает написание небольших игр, для которых не требуются сотни статических менеджеров. Упрощает многие методы и конструкторы, не требуя одного или нескольких дополнительных параметров, к которым вместо этого обращаются статически.