これはやりすぎではないのか?という話
依存関係にあるクラス(以下の例だとLock)をMock置き換え可能に保ちたくて、ファクトリー(LockFactory)をインジェクションしてみました。
class Lock { public: virtual ~Lock() = 0; }; class LockFactory { public: virtual Lock * create(const char * name) = 0; }; class Client { public: Client(LockFactory * pLockFactory) : m_pLockFactory(pLockFactory) { } void doSomethingWithLock() { const std::auto_ptr< Lock > pLock(m_pLockFactory->create("hogehoge")); ... } private: LockFactory * m_pLockFactory; };
今日的には単体テスト可能性が最優先と思えるので、だとしたらこうかな。でも、大げさすぎるような気もする。さて...