Я в першу чергу розробник веб-інтерфейсу, але мені це здається, що ваш інтуїтивний дискомфорт може бути меншим, ніж проходження екземпляра, і більше про те, що ви збираєтеся трохи процедурувати з цим контролером. Чи повинен ваш контролер потіти всіма цими деталями? Чому він навіть посилається на більше ніж одне ім'я іншого об'єкта для отримання звуку?
У дизайні ООП я схильний думати з приводу того, що є вічнозеленим і що, швидше за все, може зазнати змін. Тема, яку потрібно змінити, - це те, що ви хочете, як правило, розміщувати у великих об'єктних полях, щоб ви могли підтримувати послідовні інтерфейси навіть під час зміни гравців або додавання нових параметрів. Або ви виявляєте, що хочете оптом обміняти аудіооб'єкти або компоненти.
У цьому випадку ваш контролер повинен визначити, що потрібно відтворювати аудіофайл, а потім мати послідовний / вічнозелений спосіб його відтворення. З іншого боку, аудіоплеєр може легко змінитися, коли технологія та платформи змінюються або додаються нові варіанти. Усі ці деталі повинні розташовуватися під інтерфейсом більшого складеного об'єкта IMO, і вам не доведеться переписувати контролер, коли деталі того, як відтворюється звук, змінюються. Потім, коли ви передаєте екземпляр об'єкта з такими деталями, як розташування файлів, у більший об'єкт, все, що відбувається обмін, робиться в інтер'єрі відповідного контексту, коли хтось менш схильний зробити щось з цим нерозумно.
Так що в цьому випадку я не думаю, що саме цей предметний екземпляр може кидатися навколо, що може вас клопотати. Це те, що капітан Пікар бігає вниз до машинного відділення, щоб увімкнути основу основи, біжить назад до мосту, щоб намітити координати, а потім натискаючи кнопку "пробий" після вмикання щитів, а не просто кажучи "Візьміть нас на планету X в Warp 9. Зробіть так ". і дозволяючи його екіпажу розібратися в деталях. Тому що, коли він обробляє це таким чином, він може капітан будь-якого корабля флоту, не знаючи компонування кожного корабля і як все працює. І це, в кінцевому рахунку, найбільший виграш проекту OOP, IMO.