Cita: Tengo un sistema que requiere múltiples accesos a la BD... en ocaciones una sola acción puede requerir varios accesos a la BD en diferentes clases, para lo cual paso referencias de la conexión a dichas clases para evitar su duplicación, esto hace un poco confuso el diseño de la aplicación, ya que tengo que cuidar mucho no crear múltiples instancias de la clase de la BD para no duplicar conexiones. la solución para mi seria usar el patrón singleton, ya que siempre se usaría una sola instancia de la clase donde sea que la requiera. pero veo mucha polémica acerca de este patrón que me hace pensar en la seguridad ya que es considerado como si fuera una variable global, y la seguridad en mi aplicación es de mucha importancia ya que se manejan datos personales.
El problema con el Singleton es que lo puedes usar de forma indiscriminada sin necesidad de pasarlo como parámetro si esta en un contexto global. Pero puedes reducir el problema pasando como parámetro la instancia que te proporciona el singleton y no usar la llamada estatica a la clase. Seria lo mas sencillo si quieres algo mas tendrás que hacer uso de inyección de dependencias con inversión de control o usando Factories.
Cita: Ustedes que opinan o me recomiendan? y otra duda, el implementar un singleton para conectar a la BD crearía un cuello de botella cuando hay múltiples usuarios usando la aplicación al mismo tiempo? o no aplica esto porque el singleton se elimina cuando termina la ejecución de la pagina?
No, no debe de haber problema el singleton solo existe hasta que acaba la ejecución del script