Classe de membros estáticos versus interface c-like normal
Olá.
Depois de leraqui sobre o padrão do localizador de serviço, ele me fez pensar se uma classe com apenas membros estáticos realmente é o caminho a seguir, ou se uma interace tipo c normal não seria mais apropriada. Eu vejo pessoas jogando ao redor doclass
sempre que eles nem precisam dela.
Exemplo com a classe de membros estáticos extraída da página vinculada:
class Locator
{
public:
static IAudio* GetAudio() { return service_; }
static void Register(IAudio* service)
{
service_ = service;
}
private:
static IAudio* service_;
};
Aqui está uma maneira de fazer isso também:
// 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 os exemplos podem ser chamados exatamente da mesma maneira comLocator::GetAudio()
eLocator::Register(...)
. Um dos itens acima é superior ao outro? Eles são os mesmos? Talvez haja maneiras melhores de conseguir isso? Ou é apenas sobre preferências pessoais? Obrigado por qualquer ajuda. :)