Te recomiendo aplicar el patron singleton en la controladora(negocio) y el modelo(datos). Tampoco he visto en donde ubicarias la conexion ya que en tu ejemplo no lo haces. Yo utiliza una capa mas, a la que la llamo "Servicios". Pongo clases de conexion, encriptacion, y otras funciones que no son responsabilidad de ninguna de las otras capas.