Herhangi bir nesne yönelimli program için akla gelebilecek bir tasarım deseni var mı? Bunu sordum çünkü son zamanlarda a Door
ile bir sınıfın bir uygulamasını gördüm Lock
. Testin bir parçasıydı ve cevap, kodun Boş Nesne desenini takip ettiğini söyledi:
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;
};
Bu bana şunu düşündürdü: Bu kod, açıklama çok basit olsa da (bu sınıf kilitli bir kapı sınıfı tasarlıyor) iyi bir tasarım deseni izler, bu yüzden daha karmaşık bir kod yazıyorsam, her zaman benim takip ediyorum