Principalmente soy un desarrollador web de interfaz de usuario, pero me parece que su incomodidad intuitiva podría ser menos sobre el paso de la instancia y más sobre el hecho de que va a ser un poco procesal con ese controlador. ¿Debería su controlador estar sudando todos estos detalles? ¿Por qué incluso hace referencia a más del nombre de otro objeto para reproducir el audio?
En el diseño de OOP, tiendo a pensar en términos de lo que es perenne y de lo que es más probable que esté sujeto a cambios. El tema de cambiar cosas es lo que querrás tender a poner en tus cajas de objetos más grandes para que puedas mantener interfaces consistentes incluso cuando los jugadores cambien o se agreguen nuevas opciones. O te encuentras con ganas de intercambiar objetos de audio o componentes al por mayor.
En este caso, su controlador necesita identificar que existe la necesidad de reproducir un archivo de audio y luego tener una forma consistente / perenne de reproducirlo. El material del reproductor de audio, por otro lado, podría cambiar fácilmente a medida que la tecnología y las plataformas se alteran o se agregan nuevas opciones. Todos esos detalles deben ubicarse debajo de una interfaz de un objeto compuesto más grande, IMO, y no debería tener que volver a escribir su controlador cuando cambian los detalles de cómo se reproduce el audio. Luego, cuando pasa una instancia de objeto con los detalles como la ubicación del archivo en el objeto más grande, todo ese intercambio se realiza en el interior de un contexto apropiado donde es menos probable que alguien haga algo tonto con él.
Entonces, en este caso, no creo que sea esa instancia de objeto que se arroje lo que podría estar molestando. Es que el Capitán Picard está corriendo hacia la sala de máquinas para encender el núcleo de urdimbre, corriendo de regreso al puente para trazar las coordenadas, y luego presionando el botón "golpearlo" después de encender los escudos en lugar de simplemente decir "Tomar nosotros al planeta X en Warp 9. Hazlo así ". y dejando que su tripulación solucione los detalles. Porque cuando lo maneja de esa manera, puede capitanear cualquier barco de la flota sin conocer el diseño de cada barco y cómo funciona todo. Y esa es, en última instancia, la mayor victoria de diseño de OOP para disparar, IMO.