क्या किसी वस्तु-उन्मुख कार्यक्रम के लिए एक बोधगम्य डिजाइन पैटर्न है? मैं यह पूछता हूं क्योंकि हाल ही में मैंने एक Door
वर्ग के कार्यान्वयन को देखा था Lock
। यह एक परीक्षण का हिस्सा था और जवाब में कहा गया था कि कोड नल ऑब्जेक्ट पैटर्न का अनुसरण कर रहा है:
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;
};
इससे मुझे लगता है: यह कोड अच्छे डिज़ाइन पैटर्न का अनुसरण करता है, भले ही विवरण इतना सरल हो (यह वर्ग एक लॉक के साथ एक डोर क्लास डिजाइन कर रहा है), इसलिए यदि मैं अधिक जटिल कोड लिख रहा हूं, तो क्या हमेशा कुछ डिज़ाइन पैटर्न होना चाहिए कि मैं पीछा कर रहा हूँ?