ちょっと、そこ。ここ
で Service Locator パターンについて
読んだ後、静的メンバーのみを持つクラスが本当に進むべき道なのか、それとも通常の 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(...)
。上記のいずれかが他のものよりも優れていますか? 彼らは同じですか?これを達成するためのより良い方法はありますか?それとも個人的な好みの問題ですか?助けてくれてありがとう。:)