オブジェクト指向プログラムに考えられる設計パターンはありますか?これは、最近、のDoorクラスの実装を見たためですLock。これはテストの一部であり、答えは、コードがNull Objectパターンに従っていることです。
class Lock
{
public:
    virtual void close() = 0;
    virtual void open() = 0;
    virtual bool is_open() const = 0;
    virtual ~Lock() { }
};
class DummyLock
    : public Lock
{
private:
    DummyLock();
    DummyLock(const DummyLock&) = delete;
    DummyLock& operator=(const DummyLock&) = delete;
private:
    void close() { }
    void open() { }
    bool is_open() const { return true; }
public:
    static DummyLock m_instance;
};
class Door
{
public:
    Door() : m_lock(DummyLock::m_instance) { }
    Door(Lock &lock) : m_lock(lock) { }
public:
    Lock& get_lock() const { return m_lock; }
private:
    Lock &m_lock;
};このコードは、私は、より複雑なコードを書いていますので、もし、そこにする必要があり、説明は(このクラスは、ロックとドアのクラスを設計している)簡単なようであっても良いデザインパターンに従います。これは私が考えて作られた、常に私はいくつかのデザインパターンがあることもフォローしていますか?