嘿。
在阅读了这里关于服务定位器模式的信息后,我开始思考只有静态成员的类是否真的是要走的路,或者普通的类 c 交互是否更合适。class
我看到人们在他们甚至不需要它的时候一直在扔关键字。
从链接页面获取静态成员类的示例:
class Locator
{
public:
static IAudio* GetAudio() { return service_; }
static void Register(IAudio* service)
{
service_ = service;
}
private:
static IAudio* service_;
};
这也是一种方法:
// 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;
}
}
Locator::GetAudio()
这两个示例都可以用和以完全相同的方式调用Locator::Register(...)
。以上哪一项优于另一项?他们是一样的吗?有没有更好的方法来实现这一点?还是只是个人喜好?谢谢你的帮助。:)