Я в первую очередь разработчик веб-интерфейса, но для меня это звучит так, будто ваш интуитивный дискомфорт может быть связан не столько с прохождением экземпляра, сколько с тем фактом, что вы немного процедурны с этим контроллером. Должен ли ваш контроллер потеть все эти детали? Почему он даже ссылается на более чем одно имя объекта для воспроизведения звука?
В ООП-дизайне я склонен думать о том, что вечнозеленое и что может быть подвержено изменениям. Предмет для изменения - это то, что вы захотите добавить в свои большие объекты, чтобы вы могли поддерживать согласованные интерфейсы, даже когда игроки меняются или добавляются новые опции. Или вы захотите обменять аудио объекты или компоненты в них оптом.
В этом случае ваш контроллер должен определить, что необходимо воспроизвести аудиофайл, а затем иметь согласованный / вечнозеленый способ его воспроизведения. Аудиоплееры, с другой стороны, могут легко меняться по мере изменения технологий и платформ или добавления новых вариантов. Все эти детали должны находиться под интерфейсом более крупного составного объекта, IMO, и вам не нужно переписывать свой контроллер, когда изменяются детали воспроизведения звука. Затем, когда вы передаете экземпляр объекта с такими деталями, как местоположение файла, в более крупный объект, все это происходит внутри соответствующего контекста, где кто-то с меньшей вероятностью сделает что-то глупое с ним.
Так что в этом случае я не думаю, что этот экземпляр объекта может вызвать у вас беспокойство. Это то, что капитан Пикард бежит в машинное отделение, чтобы включить ядро основы, бежит обратно к мосту, чтобы построить координаты, а затем нажимает кнопку «пробить» после включения щитов, а не просто говорит «Возьми нас на планету X в Warp 9. Сделай так. " и позволить своей команде разобраться в деталях. Потому что, когда он справляется с этим, он может управлять любым кораблем во флоте, не зная расположения каждого корабля и как все работает. И это, в конечном счете, самая большая победа в ООП-дизайне - IMO.