Singletonの続き。:-[
要するに
GamePadを大域的アクセス可能なクラスとして扱いたい理由としては
class Character { public: Character(){} virtual ~Character(){} virtual void execute() = 0; }; class Player : public Character { public: Player(){}; virtual ~Player(){}; virtual void execute(){ } };
なんてクラスがある場合、
PlayerクラスではGamePadを扱いたい筈。
メニュなんかでもそうだけれど、
入力を受け取りたい箇所というのは幾つもある。
この場合、大域的アクセスにしてしまえば何も考えずに済む。
でも、ちょっと待った。
別にPlayerクラスがGamePadクラスをCompositionで良いんじゃない?
(DIでも良いケド)
要するに、
class Player : public Character { public: Player(){}; virtual ~Player(){}; virtual void execute(){ if (gamePad.isPushButton(GamePad::PAD_A)) { // ... } } private: GamePad gamePad; };
とする。
GamePadは複数のインスタンスとして存在するが
実際には複数のGamePadが1つのGamePadImplなインスタンスからデータを受け取って、
単なるインターフェイスとして機能すれば良い。
そんなことはないかしらん?