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. :)