Clase de miembros estáticos versus interfaz normal tipo c

Hola.
Despues de leeraquí sobre el patrón del Localizador de servicios, me hizo pensar si una clase con solo miembros estáticos realmente es el camino a seguir, o si una interacción normal tipo C no sería más apropiada. Veo gente tirando por elclass palabra clave todo el tiempo cuando ni siquiera la necesitan.
Ejemplo con clase de miembros estáticos tomada de la página vinculada:

class Locator
{
public:
    static IAudio* GetAudio() { return service_; }

    static void Register(IAudio* service)
    {
        service_ = service;
    }

private:
    static IAudio* service_;
};

Aquí hay una manera en que uno podría hacerlo también:

// in .h
namespace Locator{
    IAudio* GetAudio();
    void Register(IAudio* service);
}

// in .cpp
namespace Locator{
    namespace {
        IAudio* service_;
    }

    IAudio* GetAudio() {
        return service_;
    }
    void Register(IAudio* service) {
        service_ = service;
    }
}

Ambos ejemplos se pueden llamar exactamente de la misma manera conLocator::GetAudio() yLocator::Register(...). ¿Uno de los anteriores es superior al otro? ¿Son lo mismo? ¿Hay quizás mejores formas de lograr esto? ¿O se trata solo de preferencias personales? Gracias por cualquier ayuda. :)

Respuestas a la pregunta(2)

Su respuesta a la pregunta